San*_*dro 5 python multiprocessing
我正在尝试使用python的多处理库来希望获得一些性能.具体来说我正在使用它的地图功能.现在,出于某种原因,当我将其与单个处理的对应物交换出来时,我没有获得高内存使用率.但是使用多处理版本的地图会让我的记忆彻底改变.为了记录我正在做一些容易占用大量内存的东西,但两者之间的区别是什么会造成如此明显的差异呢?
您意识到多处理不使用线程,是吗?我这样说是因为你提到了“单线程对应物”。
multiprocessing您是否通过's发送大量数据map?一个可能的原因是在许多情况下必须进行序列化多重处理。multiprocessing使用pickle,它通常比它所腌制的数据占用更多的内存。(在某些情况下,特别是在fork()调用该map方法时创建新进程的系统上,它可以避免序列化,但每当需要将新数据发送到现有进程时,它就无法这样做。)
由于multiprocessing所有实际工作都是在单独的进程中完成的,因此主进程的内存不应受到您执行的实际操作的影响。然而,内存的总使用量确实会增加很多,因为每个工作进程都有您发送的数据的副本。在具有 CoW 的系统上,这有时是写时复制内存(与不序列化的情况相同),但 Python 对内存的使用使得它很快就会被写入,从而被复制。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |