Я не могу получить глобальную переменную из отдельного файла для потоковой передачи

#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() возможно.