加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 仅在多处理时使用高内存

发布时间:2020-12-17 00:52:07 所属栏目:Python 来源:网络整理
导读:我正在尝试使用python的多处理库来希望获得一些性能.具体来说,我正在使用其map功能.现在,出于某种原因,当我将其与单个处理的对应物交换出来时,我没有获得高内存使用率.但是使用多处理版本的地图会让我的记忆彻底改变.为了记录我正在做一些容易占用大量内存的

我正在尝试使用python的多处理库来希望获得一些性能.具体来说,我正在使用其map功能.现在,出于某种原因,当我将其与单个处理的对应物交换出来时,我没有获得高内存使用率.但是使用多处理版本的地图会让我的记忆彻底改变.为了记录我正在做一些容易占用大量内存的东西,但两者之间的区别是什么会造成如此明显的差异呢?

最佳答案
您意识到多处理不使用线程,是吗?我这样说是因为你提到了“单线程对手”.

您是通过多处理的地图发送大量数据吗?可能的原因是序列化多处理在许多情况下必须要做.多处理使用pickle,它通常比它的酸洗数据占用更多的内存. (在某些情况下,特别是在使用fork()的系统上,当您调用map方法时会创建新进程,它可以避免序列化,但只要需要将新数据发送到现有进程,它就不能这样做.)

由于使用多处理,所有实际工作都在单独的进程中完成,因此主进程的内存不应受您执行的实际操作的影响.但是,内存的总使用量确实会增加很多,因为每个工作进程都有您发送的数据的副本.在有CoW的系统上,这有时是写时复制内存(在非串行化的情况下),但是Python对内存的使用很快就会被写入,从而被复制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读