我是Python新手。我对并行和并发编程感兴趣。我了解进程和线程之间的区别,但对多处理和线程的工作方式感到困惑。 如果我的程序A是-
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是-
from threading import Thread
for i in range(50)
t = Thread(target=worker)
t.start()
在程序B中,所有线程是否都依赖于1个进程?
请向我解释一下。谢谢。
答案 0 :(得分:0)
多处理会创建新的子进程,该子进程可以同时在多个内核上运行。
线程,顾名思义,将创建一个线程。多个线程共享相同的内存空间,并且GIL(全局解释器锁定)将阻止它们并发写入。由于存在GIL,因此无法在多个内核上产生线程。
因此,A将在4个CPU上运行,而B将在一个CPU上运行。