问题: 在可用内核之间并行化CPU密集型任务,并行化的功能需要复杂的对象(只读),每个对象都有其他对象的列表/元组/字典作为属性。
栏: 使用多处理,可以产生并行进程,但它们比单进程版本慢100倍,我觉得这是由于所需对象的序列化/复制。
问题: 什么应该是在进程之间共享复杂对象的正确方法,使用Queue似乎是反直觉的,因为锁/信号量会出现在图片中,我也不确定我是否能够将复杂对象放入其中。
不确定是否使用多处理数组/值,因为它们似乎是针对本机C类型的。
如果我想继续执行远程管理器,我的模块所需的所有对象是否只在管理器进程内创建,还是可以分配给管理器代理类/类? 例如:
manager_obj = Some_Manager.Object_Class_Name(already_existing_object)
另外,在Linux中,copy-on-write对我来说不起作用,我仍然可以看到分叉的进程消耗了大量的内存。