import threading
print threading.activeCount()产出:2
当此代码保存到文件中并运行时。
当它是主线程时,它怎么可能是2呢?
在运行foo.py文件时,除了主线程之外,python默认情况下还运行另一个线程吗?
发布于 2016-11-07 18:17:24
通灵调试:您没有在普通Python解释器中运行。普通的Python解释器不会启动额外的线程(除非您有一个奇怪的PYTHONSTARTUP文件),但是其他解释器会这样做。例如:
ipython启动一个额外的线程来保存后台的命令历史记录(以避免延迟提示符)IDLE是使用在套接字上通信的多个进程设计的,它提供的交互式解释器正在使用守护进程线程执行后台套接字通信。尝试运行print threading.enumerate();它可能会告诉您后台线程正在做什么(例如,ipython正在使用一个名为HistorySavingThread的Thread子类,IDLEs是普通的Thread,但是它运行的函数名为SockThread,它为您提供了它正在做什么的线索)。
发布于 2018-06-28 07:20:23
默认的运行线程是主线程,因此下一个线程将是主线程的子线程,因此它将启动form count 2。
示例:
thread count is : 1
Enumerate thread count is : [<_MainThread(MainThread, started 140735135682560)>]
Starting Thread-1
thread count is : 2
Enumerate thread count is : [<_MainThread(MainThread, started 140735135682560)>, <myThread(Thread-1, started 123145306509312)>]
Starting Thread-2
thread count is : 3
Enumerate thread count is : [<_MainThread(MainThread, started 140735135682560)>, <myThread(Thread-1, started 123145306509312)>, <myThread(Thread-2, started 123145310715904)>]
Exiting Main Thread
thread count is : 3
Enumerate thread count is : [<_MainThread(MainThread, started 140735135682560)>, <myThread(Thread-1, started 123145306509312)>, <myThread(Thread-2, started 123145310715904)>]
Thread-1: Thu Jun 28 12:44:35 2018
Thread-1: Thu Jun 28 12:44:36 2018
Thread-2: Thu Jun 28 12:44:36 2018
Thread-1: Thu Jun 28 12:44:37 2018
Thread-1: Thu Jun 28 12:44:38 2018
Thread-2: Thu Jun 28 12:44:38 2018
Thread-1: Thu Jun 28 12:44:39 2018
Exiting Thread-1
Thread-2: Thu Jun 28 12:44:40 2018
Thread-2: Thu Jun 28 12:44:42 2018
Thread-2: Thu Jun 28 12:44:44 2018
Exiting Thread-2
Enumerate thread count is : [<_MainThread(MainThread, started 140735135682560)>]发布于 2020-06-03 12:51:47
当我在空闲中运行像您这样的程序时,它返回线程数为2。当我在Windows中运行它时,它返回线程数为1。因此,显然,空闲使用一个额外的线程。
当在空闲中运行threading.enumerate()时,它说有两个线程在运行: MainThread和SockThread --在Windows中运行相同的代码时,SockThread没有运行。
总之,当您在空闲中运行python代码时,SockThread在后台运行,这会将1添加到线程计数中。
https://stackoverflow.com/questions/40471711
复制相似问题