3
import threading 
print threading.activeCount() 

输出:2为什么在开始时python线程数为2?

当该代码被保存到文件中并运行。

当它是主线程时它怎么会是2?

当我们运行foo.py文件时,除了主线程之外,python是否还会默认运行另一个线程?

+1

你在测试什么?我猜你正在使用'ipython'或'IDLE'进行测试,两者都使用线程进行后台工作。普通的Python解释器不会启动额外的线程,除非您在'PYTHONSTARTUP'文件或类似文件中配置了它。 – ShadowRanger

+0

我得到'1'(使用python 3.5.2) – Olian04

回答

5

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

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

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

相关问题