我可以在Python的多进程上进行多线程吗?



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

例如,假设我有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()

这不是针对特定项目,而只是为了我的一般知识。谢谢

是的,每个Process都可以在自己的Thread对象中产生。实际上,当您使用Thread s没有multiprocessing模块时,您会目睹这一点,因为您的主脚本是在自己的过程中运行的,并且会产生Thread s!但是,要拥有许多带有自己线程的过程将很快变得复杂,但是要管理共享内存(主要是因为过程具有单独的内存(,并且您必须非常小心以避免僵局。您的脚本可能很长,可以完成此技术有用的事情。我认为通常最好坚持一个或另一个。引用您可能对此感兴趣的这篇文章:

产卵过程比产卵线程慢一点。一旦运行,就没有太大的区别。

相关内容

  • 没有找到相关文章

最新更新