【发布时间】:2016-09-30 08:28:17
【问题描述】:
我一直在尝试使用subprocess32.Popen,但这会导致我的系统崩溃(CPU 100%)。所以,我有以下代码:
import subprocess32 as subprocess
for i in some_iterable:
output = subprocess.Popen(['/path/to/sh/file/script.sh',i[0],i[1],i[2],i[3],i[4],i[5]],shell=False,stdin=None,stdout=None,stderr=None,close_fds=True)
在此之前,我有以下内容:
import subprocess32 as subprocess
for i in some_iterable:
output subprocess.check_output(['/path/to/sh/file/script.sh',i[0],i[1],i[2],i[3],i[4],i[5]])
.. 我对此没有任何问题 - 只是速度太慢了。
使用 Popen,我发现这很快 - 但我的 CPU 在几秒钟内就超过 100%,系统崩溃了 - 强制重新启动。
我想知道我在做什么导致 Popen 崩溃?
在 Linux 上,Python2.7 如果有帮助的话。
谢谢。
【问题讨论】:
-
您的脚本到底在做什么,在这种情况下
some_iterable有多大?check_output()等待每个进程完成,Popen()没有,所以你正在产生多个并行进程。因此,如果您的脚本消耗大量资源(内存不足),这可能是系统变得不稳定的原因。 -
some_iterable大约有 200 万个条目。我明白你在说什么,但我该如何避免这种情况?
标签: bash python-2.7 subprocess