[英]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.