我已经看到一些使用Python多处理模块的内存使用的帖子.但问题似乎并不能解决我在这里遇到的问题.我发表了我的分析,希望有人能帮助我.

问题

我正在使用多进程并行执行任务,我注意到,工作进程的内存消耗无限期增长.我有一个小的独立的例子,应该复制我注意到的.

import multiprocessing as mp

import time

def calculate(num):

l = [num*num for num in range(num)]

s = sum(l)

del l # delete lists as an option

return s

if __name__ == "__main__":

pool = mp.Pool(processes=2)

time.sleep(5)

print "launching calculation"

num_tasks = 1000

tasks = [pool.apply_async(calculate,(i,)) for i in range(num_tasks)]

for f in tasks:

print f.get(5)

print "calculation finished"

time.sleep(10)

print "closing pool"

pool.close()

print "closed pool"

print "joining pool"

pool.join()

print "joined pool"

time.sleep(5)

系统

我正在运行Windows,我使用任务管理器来监视内存使用情况.我正在运行Python 2.7.6.

意见

我已经总结了下面的2个工作进程的内存消耗.

+---------------+----------------------+----------------------+

| num_tasks | memory with del | memory without del |

| | proc_1 | proc_2 | proc_1 | proc_2 |

+---------------+----------------------+----------------------+

| 1000 | 4884 | 4694 | 4892 | 4952 |

| 5000 | 5588 | 5596 | 6140 | 6268 |

| 10000 | 6528 | 6580 | 6640 | 6644 |

+---------------+----------------------+----------------------+

在上表中,我尝试更改任务数量,并观察在所有计算结束之前和加入池之前消耗的内存. “del”和“without del”选项是否分别对calculate(num)函数中的del l行进行注释或注释.计算前,内存消耗量约为4400.

>看起来手动清除列表的结果是工作进程的内存使用量较低.我以为垃圾收集器会照顾这个.有办法强制垃圾收集吗?

>令人困惑的是,随着任务数量的增加,这两种情况下的内存使用量不断增加.有没有办法限制内存使用?

我有一个基于这个例子的过程,意在长期运行.我观察到这个工作进程在过夜运行之后占用了大量的内存(〜4GB).做一个连接来释放内存不是一个选择,我试图找出一种没有加入的方式.

这似乎有点神秘.有人遇到过类似的事情吗?如何解决这个问题?

python有内存处理模块吗_使用Python多处理的高内存使用相关推荐

  1. python飞机大战功能模块图_基于Python的飞机大战游戏设计

    第 2 3 卷 第 1 期 2019年 3 月 扬 州 职 业 大 学 学 报 Journal of Yangzhou Polytechnic College Vol .23 No . 1 Mar . ...

  2. python 自动发邮件模块抄送_一个python的邮件发送脚本,自动,定时,可以附件发送,抄送...

    #mail.py使用方法: 1,本脚本同目录下文件介绍: sender.list:邮件发送者邮箱和密码,第一行账号(如example@example.com),第二行密码(必须项,不能为空) rece ...

  3. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  4. python图形化方式模块安装_(怎么安装python模块,如何安装python模块,常用安装方式)python助手安装教程视频...

    有没有比较好的python3的入门视频教程,网盘或网站都可以. 我这里有Python,开发,进阶,自动化,实战列视频教程,还有安装包,,代码等容,这里就不一一说了,全套内容一共300G左右,非常的详细 ...

  5. python的requests模块功能_《Python数据可视化编程实战》—— 1.7 安装requests模块-阿里云开发者社区...

    本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.7节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...

  6. python gevent模块 下载_【python安全攻防】包、模块、类、对象

    终于又到了一周一度的整理博客的时间了,博主平时课余时间看书,周末统一整理,坚持周更真是爱了爱了 - 今天要说的是python面向对象这一部分的内容,今天这是基础篇的第二篇,也是最后一篇. 说来基础篇还 ...

  7. python常用模块教程_盘点Python常用的模块和包

    模块 1.定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块. 2.优点: 提高代码 ...

  8. python 接口自动化的sql验证_基于Python的接口自动化实战-基础篇之pymysql模块操做数据库...

    引言 在进行功能或者接口测试时经常须要经过链接数据库,操做和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操做是否正确等.所以,在进行接口自动化测试时,咱们同样绕不开接 ...

  9. 学python必须得英语精通吗_“学习python必须精通的几个模块“

    python中都有哪些模块呢 这就多了你,文档有每个模块介绍: https://docs.python.org/2/library/index.html 如果了您的问题请采纳! 如果未解继续追问 如何 ...

最新文章

  1. 功能分支重新设置后,Git推送被拒绝
  2. Python 学习日记 第八天
  3. WPF编游戏系列 之四 用户控件
  4. INTEROP service's ResolveLink operation returned 2 targets for hash, first one
  5. 英语复习二:每单元的翻译篇章
  6. k8s - 如何变更CNI网络插件IP池?
  7. python 多线程Thread
  8. Voltage Keepsake CodeForces - 801C(二分)
  9. python pip国内源_Python pip配置国内源 (转载)
  10. 独立游戏开发者---孤独前行的梦想家
  11. aop:aspectj-autoproxy作用
  12. 干货 :六招教你用Python分分钟构建好玩的深度学习应用
  13. Python(一)为什么要学习Python
  14. 又一AI大牛重返学界! 原京东高级副总裁周伯文受聘为清华电子工程系长聘教授...
  15. 树莓派初次开机配置教程
  16. 如何让word文档都在同一个窗口下打开 (反之亦可)
  17. Openpose Usage 笔记
  18. 最新仿商城发卡网源码,带图片展示
  19. 机架服务器作用,什么是机架式服务器?有什么优势?
  20. java实现智能拼图_JAVA实现拼图游戏

热门文章

  1. Python 数据类型之字典
  2. 2018-2019-1 20165315 实验三 实时系统
  3. 娓娓道来Promise
  4. mysql安装sphinx引擎
  5. Windows系统中让硬盘更快的九大绝招
  6. [PAPER-RECORD]
  7. go gin提交form表单请求
  8. vue的插值语法及el和data、methods语法释义
  9. linux下压缩命令gzip使用
  10. kafka在zk中的目录