为什么Python 2.7为threading.Thread创建进程

Sci*_*pio 1 python python-multithreading

我在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
Run Code Online (Sandbox Code Playgroud)

然后我为这个函数创建线程

t = threading.Thread(target=r)
t.start()
Run Code Online (Sandbox Code Playgroud)

然后在htop中我可以看到另一个生成的进程(有自己的PID)!和处理.线程文档说:

CPython实现细节:在CPython中,由于Global Interpreter Lock,只有一个线程可以同时执行Python代码(即使某些面向性能的库可能会克服此限制).如果您希望应用程序更好地利用计算资源对于多核机器,建议您使用多处理.

为什么这种行为与文档不同?

jus*_*nas 5

这实际上是一个操作系统的东西:进程和线程在Linux上差别不大.Htop会列出所有单独的线程,就好像它们是进程一样.有关详细信息,请参阅此Unix Stack Exchange问​​题.