Вы тестируете это в REPL?Или в реальной программе?Я спрашиваю, потому что, когда я запустил приведенное ниже с использованием REPL, я получил тот же результат, но когда я запустил то же самое, что и скрипт, потоки имели разные идентификаторы.
import threading
def thid():
print threading.currentThread().ident
t1 = threading.Thread(target=thid)
t2 = threading.Thread(target=thid)
t1.start()
t2.start()
t1.join()
t2.join()
Вывод REPL:
>>> t1.start()
4301111296
>>> t2.start()
4301111296
Вывод сценария:
me@mine:~ $ python th.py
4300935168
4302835712
Я подозреваю, что это ожидаемое поведение;ниже приведены документы threading
:
«Идентификатор потока» этого потока или None, если поток не был запущен.Это ненулевое целое число.Смотрите функцию thread.get_ident (). Идентификаторы потока могут быть переработаны при выходе из потока и создании другого потока.
Кроме того, я изменил thid
в REPL следующим образом:
>>> def thid():
... print threading.currentThread().ident
... sleep(10)
И когда я звонил t2.start()
в течение 10 секунд после звонка t1.start()
, у них были разные идентификаторы, но если я ждал более 10 секунд, у них был один и тот же идентификатор.
Если вы хотите различать разные потоки, просто наберите id(threading.currentThread())
.Идентификаторы Python всегда различны.