명시적 호출 전 스레드 실행
Python의 멀티스레딩 모듈을 사용하면 Thread 객체를 사용하여 코드를 병렬 실행할 수 있습니다. 그러나 스레드를 생성하고 구성할 때 비정상적인 동작이 발생할 수 있습니다.
아래 표시된 것처럼 후행 괄호를 사용하여 스레드의 대상 인수에 함수를 전달할 때 문제가 발생합니다.
t1 = threading.Thread(target=self.read())
이 동작 이는 target=self.read()를 호출하면 self.read() 실행이 스레드에 할당된다는 오해에서 비롯됩니다. 불행히도 이것은 잘못된 것입니다. 괄호를 추가하면 함수가 즉시 호출되고 반환 값이 대신 대상으로 할당됩니다. Thread 객체의 경우 함수를 대상으로 수신할 것으로 예상됩니다.
이 문제를 해결하려면 대상 인수에서 괄호를 제거하고 스레드의 start() 메서드를 명시적으로 호출하면 됩니다.
t1 = threading.Thread(target=self.read) t1.start()
이제 self.read()는 새로 생성된 스레드에서 무한정 실행되어 프로그램이 계속 진행되어 "무언가"를 인쇄할 수 있습니다. 이렇게 수정하면 해당 기능이 대상으로 올바르게 할당되고 조기에 실행되지 않습니다.
위 내용은 Python 스레드를 명시적으로 시작하기 전에 실행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!