我在ARM Raspbian linux,Python 2.7.13和amd64 Gentoo linux,Python 2.7.14上运行代码
我有一个功能
import threading
def r() :
s = 1
while True:
s = s + 1
然后我为此函数创建线程
t = threading.Thread(target=r)
t.start()
然后在htop中,我可以看到生成了另一个进程(具有其自己的PID)!处理。线程文档说:
CPython实现细节:在CPython中,由于具有全局解释器锁,因此只有一个线程可以一次执行Python代码(即使某些面向性能的库可能克服了此限制)。如果您希望应用程序更好地利用多核计算机的计算资源,建议您使用多处理。
为什么这种行为与文档不同?
答案 0 :(得分:5)
这实际上是OS方面的东西:Linux上的进程和线程没有太大区别。 Htop将列出所有单独的线程,就好像它们是进程一样。 See this Unix Stack Exchange question了解更多信息。