> 백엔드 개발 > 파이썬 튜토리얼 > Python 스레드를 명시적으로 시작하기 전에 실행되는 이유는 무엇입니까?

Python 스레드를 명시적으로 시작하기 전에 실행되는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-10 08:03:02
원래의
673명이 탐색했습니다.

Why does my Python thread execute before I explicitly start it?

명시적 호출 전 스레드 실행

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿