小编jme*_*kin的帖子

使用subprocess.Popen的Python内存分配错误

我正在做一些生物信息学工作.我有一个python脚本,它一度调用程序来执行一个昂贵的过程(序列对齐......使用大量的计算能力和内存).我用subprocess.Popen调用它.当我在测试用例上运行它时,它完成并完成.但是,当我在完整文件上运行它时,它必须多次为不同的输入集执行此操作,它会死掉.子流程抛出:

OSError: [Errno 12] Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一些链接,这里这里有类似的问题,但我不确定它们是否适用于我的情况.

默认情况下,序列对齐器将尝试请求51000M的内存.它并不总是使用那么多,但它可能会.加载和处理完整输入后,就无法使用.但是,限制它请求的数量或将尝试使用的数量较少,在运行时可能仍然可用,这会给我带来同样的错误.我也试过用shell = True和同样的东西运行.

这已经困扰了我几天了.谢谢你的帮助.

编辑:扩展回溯:

File "..../python2.6/subprocess.py", line 1037, in _execute_child
    self.pid=os.fork()
OSError: [Errno 12] Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)

抛出错误.

Edit2:在64位ubuntu 10.4上运行python 2.6.4

python subprocess memory-management

8
推荐指数
2
解决办法
8226
查看次数

标签 统计

memory-management ×1

python ×1

subprocess ×1