我可以在python中的多进程之上执行多线程吗

时间:2019-05-13 22:19:24

标签: python multithreading multiprocessing

我可以在多进程程序的每个进程上执行多线程吗?

例如,假设我有4个可用的内核,我可以在这4个内核中的每一个中添加30个线程吗?

这听起来可能令人困惑,所以下面的示例代码更好地显示了我的问题

from multiprocessing  import Process
from threading  import Thread

if __name__ == "__main__": 
    processes = []
    for i in range(4):
        processes.append(Process(target=target))
    for p in processes:
        # Can I add threads on each of these processes
        # p.append(Thread(target=target2))
        p.start()
    for p in processes:
        p.join()

这不是针对特定项目的,只是出于我的常识。 谢谢

1 个答案:

答案 0 :(得分:0)

是的,每个Process都可以在自己的Thread对象中生成。实际上,当您在不使用Thread模块的情况下使用multiprocessing时,您会亲眼目睹这是因为您的主脚本正在其自己的进程中运行,并且正在生成Thread!但是,拥有多个进程(每个进程都有自己的线程)将很快变得难以管理共享内存(主要是因为进程具有单独的内存),并且您必须非常小心以避免死锁。您的脚本可能很长,无法完成使用此技术的有用操作。我认为总体上最好坚持一个或另一个。引用this post that you would probably be interested in:

  

生成进程比生成线程要慢一些。它们一旦运行,就不会有太大的区别。