正如标题所说,对threading.currentThread().ident
的不同调用返回34382823872,即使在不同的进程中也是如此。 (使用Python 3.1和FreeBSD)
FreeBSD是否存在python线程的问题?
答案 0 :(得分:4)
你在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
文档:
此线程的“线程标识符”,如果线程尚未启动,则为“无”。这是一个非零整数。请参见thread.get_ident()函数。 当线程退出并创建另一个线程时,可以回收线程标识符。
此外,我在REPL中修改了thid
,如下所示:
>>> def thid():
... print threading.currentThread().ident
... sleep(10)
当我在调用t2.start()
的10秒内调用t1.start()
时,他们有不同的ID,但如果我等了10秒以上,他们就有相同的ID。
如果您想区分不同的线程,只需拨打id(threading.currentThread())
即可。 Python ID总是不同的。