关于python:线程和进程编程

thread and process programming

本问题已经有最佳答案,请猛点这里访问。

我是一个新手的Python程序员。我对并行和并发编程感兴趣。我理解进程和线程之间的区别,但我对多进程和线程是如何工作感到困惑。如果我的程序A是-

1
2
3
4
from multiprocessing import Process
for i in range(50):
    p = Process(target=worker)
    p.start()

它是在1个CPU上生成50个进程,还是在4个CPU上分发(我的笔记本电脑有4个CPU,2个核心),同样的问题是,将程序A改为程序B我的程序B是-

1
2
3
4
from threading import Thread
for i in range(50)
    t = Thread(target=worker)
    t.start()

在程序B中,所有线程是否依赖于1个进程?

请给我解释一下。谢谢您。


多进程创建新的子进程,可以同时在多个核心上运行。

线程,作为其名称,将创建一个线程。多个线程共享相同的内存空间,而gil(全局解释器锁)将阻止它们并发写入。由于gil,无法在多个核心上生成线程。

因此,A将在4个CPU上运行,而B将在1个CPU上运行。