스레드 실행이 조기에 시작됨
t1.start()를 호출하지 않았음에도 불구하고 t1이 후속 인쇄 전에 실행을 시작하는 이유는 무엇입니까? 구문?
분석
t1의 대상 정의에서 self.read() 뒤에 괄호가 있으면 Python의 기본 매개변수 전달 의미로 인해 조기 실행이 발생합니다. 괄호를 생략하면 self.read가 실행 결과가 아닌 함수 참조로 전달됩니다.
해결 방법
올바른 실행을 보장하려면 후행 괄호를 제거하세요. from self.read():
# Remove parentheses to pass a function reference t1 = threading.Thread(target=self.read) t1.start() print("something")
인수가 필요한 대상의 경우 args 및 kwargs 또는 람다 함수:
# Using args and kwargs (preferred) t1 = threading.Thread(target=f, args=(a, b), kwargs={'x': c}) # Using a lambda function (watch for variable reassignment issues) t1 = threading.Thread(target=lambda: f(a, b, x=c))
위 내용은 내 스레드가 Print 문 전에 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!