>  기사  >  백엔드 개발  >  내 스레드가 Print 문 전에 실행되는 이유는 무엇입니까?

내 스레드가 Print 문 전에 실행되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 17:58:02887검색

Why Does My Thread Execute Before the Print Statement?

스레드 실행이 조기에 시작됨

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.