如标题所示,即使在不同的进程中,对threading.currentThread().ident的不同调用也会返回34382823872. (使用Python 3.1和FreeBSD)
python线程是否是FreeBSD的问题?
解决方法:
您是否正在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
文档的信息:
The ‘thread identifier’ of this thread or None if the thread has not been started. This is a nonzero integer. See the thread.get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created.
此外,我在REPL中修改了thid,如下所示:
>>> def thid():
... print threading.currentThread().ident
... sleep(10)
当我在调用t1.start()的10秒内调用t2.start()时,它们具有不同的ID,但是如果我等待10秒钟以上,则它们具有相同的ID.
如果要区分不同的线程,只需调用id(threading.currentThread()). Python ID始终是不同的.