线程和流程编程

时间:2018-12-27 06:55:59

标签: python multithreading multiprocessing

我是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个进程?

请向我解释一下。谢谢。

1 个答案:

答案 0 :(得分:0)

多处理会创建新的子进程,该子进程可以同时在多个内核上运行。

线程,顾名思义,将创建一个线程。多个线程共享相同的内存空间,并且GIL(全局解释器锁定)将阻止它们并发写入。由于存在GIL,因此无法在多个内核上产生线程。

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