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,它可以爲您提供關於它在做什麼的線索)。

相關問題