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

Sad*_*ana 4 python multithreading asynchronous python-multithreading

import threading
print threading.activeCount()
Run Code Online (Sandbox Code Playgroud)

输出:2

将此代码保存到文件并运行时.

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

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

Sha*_*ger 6

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

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

试试跑步print threading.enumerate(); 它可能告诉你后台线程正在做什么(例如,ipython使用一个Thread名为的子类HistorySavingThread,IDLEs是普通的Thread,但它运行的函数被命名SockThread,它为你提供了一个关于它正在做什么的线索).