繁体   English   中英

Python中的多处理/多线程。

[英]Multiprocessing / Multithreading in Python..?

我有一个我希望多次处理(多次处理)的代码,并且每个多次处理的输出都应存储在一个公用内存中,然后进行相应处理。

每个单独的进程执行一段代码(维护一个词典),每个进程应并排存储数据在一个公用存储器中(并排或如果不可能,则在最后存储所有词典。)

对于.eg

process1 ->  dict1,  
process2 -> dict2, 
process3 -> dict3

>main_dict = dict1 + dict2 + dict3

我正在用Python执行这段代码。

我也可以在这里进行多线程处理,但是实际上多线程处理并不是我所听说的那么并行...因此我可以进行多处理。 请告诉我在多处理模式下保持这种情况的过程,而又不会浪费很多时间或使处理器保持理想状态。

谢谢

您将要看一看多处理模块,尽管我认为您无法使用Python中的字典来共享内存-我认为您将需要序列化它们并通过Queue发送它们。

实际上,多线程并不是我所听说的那么并行 ...因此,我可以进行多处理。 请告诉我在多处理模式下保持这种情况的过程,而又不会浪费很多时间或使处理器保持理想状态。

如果您不想离开处理器,那么除非受到IO约束,否则您将不会获得任何额外的并行性。

这也就意味着,如果你正在做一个巨大的CPU工作,然后留在同一处理器上的金额做多只能减慢你的速度 增加并行度的唯一方法是使用其他处理器。 (即使它们是“虚拟”超线程CPU。)

另一方面,如果通过从内存或网络中读取内容而减慢了速度(似乎并非如此),则线程模块将更为合理。 但是由于GIL,它不会增加您的CPU并行度

简而言之:您要提出矛盾的事情。 弄清楚您实际需要什么,然后选择一种方法。

查看子流程模块。

文档中有许多示例,您可以对其进行处理。
最终可以帮助您解决问题...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM