首页 > 解决方案 > pythons子进程挂起(不使用PIPE)

问题描述

我在一个循环中调用了几个 bash 脚本:

import subprocess

for script in scripts:
    cmd = './{}'.format(script)
    subprocess.call(cmd, shell=True)

我的问题是一些脚本会挂起,我不明白为什么。似乎子进程只是在script执行完成后等待。请注意,我没有使用 stdout=subprocess.PIPE 等,文档特别建议可能会溢出缓冲区并导致相关问题。

有什么建议么?我可以设置timeout过程,但不希望诉诸这种措施。

当 sigterm 时,python 输出显示为:

File "/home/ubuntu/anaconda3/lib/python3.6/subprocess.py", line 269, in call
    return p.wait(timeout=timeout)
  File "/home/ubuntu/anaconda3/lib/python3.6/subprocess.py", line 1457, in wait
    (pid, sts) = self._try_wait(0)
  File "/home/ubuntu/anaconda3/lib/python3.6/subprocess.py", line 1404, in _try_wait
    (pid, sts) = os.waitpid(self.pid, wait_flags)

标签: python-3.xbashprocesssubprocess

解决方案


推荐阅读