gee*_*eek 0 python algorithm performance memory-management
我有一个我想要多次处理的代码(多处理),并且多个进程中的每一个的输出应该存储在一个公共存储器中,然后进行相应的处理.
每个单独的进程执行一段代码(维护字典),并且每个进程并排应该将数据存储在一个公共存储器中(并排或者如果不可能,则在最后存储所有字典.)
对于.eg
process1 -> dict1,
process2 -> dict2,
process3 -> dict3
>main_dict = dict1 + dict2 + dict3
Run Code Online (Sandbox Code Playgroud)
我正在用Python执行这段代码.
我也可以在这里做多线程,但多线程实际上并不像我所听到的那样平行......所以我可以进行多处理.请告诉我在多处理模式下维持这种情况的过程,而不会浪费太多时间或使处理器保持理想状态.
谢谢
您将要查看多处理模块,虽然我不认为您可以使用Python中的字典共享内存 - 我认为您将需要序列化它们并通过队列发送它们.
多线程实际上并不像我所听到的那样平行 ......所以我可以进行多处理.请告诉我在多处理模式下维持这种情况的过程,而不会浪费太多时间或使处理器保持理想状态.
如果您不想离开处理器,那么除非您受IO限制,否则您不会获得任何额外的并行性.
这意味着如果你正在做大量的CPU工作,那么停留在同一个处理器上并进行多处理只会减慢你的速度.增加并行性的唯一方法是转到其他处理器.(即使它们是"虚拟"超线程cpu的.)
另一方面,如果通过从内存或网络中读取内容(这似乎不是这种情况)而放慢速度,则线程模块会更合理.但由于GIL,它不会增加您的CPU并行度
简而言之:你要求的是矛盾的事情.弄清楚你真正需要什么,然后选择一种方法.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |