#python #python-multithreading
Вопрос:
У меня есть два файла; Один создает функцию, которая добавляет переменные в потоки.
def makeThread(xAMTLetter): global Name global Key global ID getInfoOnThread() xAMTLetter = threading.Thread(target=thread_function, args=()) xAMTLetter.Name = "Thread3" xAMTLetter.Key = getThreadInfo.ThreadKey xAMTLetter.ID = getThreadInfo.ThreadID threadsList.append(xAMTLetter) threadsIDList.append(xAMTLetter.ID) threadsNameList.append(xAMTLetter.Name) threadsKeyList.append(xAMTLetter.Key)
В моем другом файле печатается информация об этом.
xx = threading.Thread(target=thread_function, args=()) getInfoOnThread() x.Name = "Thread1" x.Key = getThreadInfo.ThreadKey x.ID = getThreadInfo.ThreadID threadsList.append(x) threadsIDList.append(x.ID) threadsNameList.append(x.Name) threadsKeyList.append(x.Key) getInfoOnThread() xx.Name = "Thread2" xx.Key = getThreadInfo.ThreadKey xx.ID = getThreadInfo.ThreadID threadsList.append(xx) threadsIDList.append(xx.ID) threadsNameList.append(xx.Name) threadsKeyList.append(xx.Key) makeThread(xxx) x.start() xx.start() xxx.start() for index, thread in enumerate(threadsList): thread.join() print(f"Thread 1 info:nName: {x.Name}nKey: {x.Key}ID: {x.ID}n") print(f"Thread 2 info:nName: {xx.Name}nKey: {xx.Key}ID: {xx.ID}n") print(f"Thread 3 info:nName: {xxx.Name}nKey: {xxx.Key}ID: {xxx.ID}n")
И я получаю это сообщение об ошибке:
Traceback (most recent call last): File "Files/main.py", line 40, in lt;modulegt; makeThread(xxx) NameError: name 'xxx' is not defined
Я пытался это исправить, но я уже давно не программировал на python. Есть какие-нибудь мысли?
Комментарии:
1. судя по предоставленному коду, xxx просто не определен ; )
2. Вы никогда не определяете
xxx
, но вы пытаетесь ссылаться на это.3. Похоже, вы ожидаете
makeThread
, что каким-то образом сгенерируете переменную, ссылающуюся на новый поток. Вы абсолютно не можете этого сделать, передав функции несуществующее имя переменной, вы должны получитьreturn
значение из функции и назначить его переменной на сайте вызова-xxx = makeThread()
возможно.