为什么Python线程计数在开始时为2?

2024-09-25 00:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

import threading
print threading.activeCount()

输出:2

当此代码保存到文件并运行时。在

当它是主线程时怎么可能是2?在

当我们运行一个食品文件?在


Tags: 文件代码import食品主线printthreadingactivecount
2条回答

心灵调试:你不是在一个普通的Python解释器中运行的。普通Python解释器不会启动额外的线程(除非您有一个奇怪的PYTHONSTARTUP文件),但其他解释器会启动。例如:

  • ipython启动一个额外的线程在后台保存命令历史记录(以避免延迟提示)
  • IDLE是使用多个进程通过套接字进行通信而设计的,它提供的交互式解释器使用守护进程线程来执行后台套接字通信

尝试运行print threading.enumerate();它可能会告诉您后台线程在做什么(例如,ipython正在使用一个名为HistorySavingThreadThread子类,IDLE是普通的Thread,但是它运行的函数名为SockThread,这给了你一个关于它在做什么的线索。在

默认运行线程是Main thread,因此下一个线程将是主线程的子线程,因此它从count2开始。在

示例:

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)>]

相关问题 更多 >