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上运行。