가, 3어떻게 파이썬에서 내가 스레드 내에서 실행 서브 루틴에서 반환 값을 추출하는 데 문제가
import threading
from threading import Thread
def dothis():
x = 17
return x
Thread(target = dothis).start()
print(x)
이 그냥 날을 제공하는 스레드 내에서 서브 루틴 실행에서 반환 값을 얻을 수 오류가 있으며 x가 정의되어 있지 않다고 말하면서 서브 루틴에서 반환했습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
하나의 문제는 반환 값을 전혀 수집하지 않는다는 것입니다. 스레딩을하지 않아도 x는 반환 값을 x에 할당해야만 x가 값을 가질 수 있습니다. x는 dothis 함수의 범위에만 있기 때문입니다. 또한 다른 스레드를 시작했기 때문에 새 스레드와 전혀 동기화하지 않았기 때문에 print (x)가 발생하기 전에 실행이 완료되었는지 여부를 알 수 없습니다. – poompt
대기열을 사용해야합니다 (예 : [이 답변] (https://stackoverflow.com/a/36926134/984421) 연결된 dup 질문. – ekhumoro