당신은 thread.get_ident
기능을 사용할 수있는 필수 비트 아래를 삶은했습니다. 다음과 같이 Thread.ident
와 thread.get_ident()
비교 :
이
import thread
import threading
import time
marked_thread_for_cancellation = None
def func(identifier):
while threading.get_ident() != marked_thread_for_cancellation:
time.sleep(1)
print('{} is alive'.format(identifier))
print('{} is dead'.format(identifier))
t1 = threading.Thread(target=func, args=(1,))
t2 = threading.Thread(target=func, args=(2,))
t1.start()
t2.start()
time.sleep(2)
marked_thread_for_cancellation = t1.ident # Stop t1
파이썬 3에서, threading.get_ident
를 사용합니다.
또한 thread.get_ident
대신 자신의 ID를 사용할 수 있습니다
import threading
import time
marked_thread_for_cancellation = None
def func(identifier):
while identifier != marked_thread_for_cancellation:
time.sleep(1)
print('{} is alive'.format(identifier))
print('{} is dead'.format(identifier))
t1 = threading.Thread(target=func, args=(1,))
t2 = threading.Thread(target=func, args=(2,))
t1.start()
t2.start()
time.sleep(2)
marked_thread_for_cancellation = 1 # Stop t1 (`1` is the identifier for t1)
threading.currentThread()가 현재 스레드를 제공합니까, 아니면 그 이상이 필요합니까? 스레드 로컬 데이터를 사용하여 스레드를 표시 할 수 있습니다. (어쩌면 내가 당신의 의도를 오해 한 것입니다.) –