python-3.x - 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)
解决方案
推荐阅读
- c# - POSTMAN POST 请求返回不支持的媒体类型
- vba - 根据字体样式删除Word表中的行
- java - 使用非自动生成的 ID 保存在 JPA/Hibernate 中的替代方法
- java - 不是带有复选框的有效结果
- build - 如何使用 CMake 检查类型是否存在(无论其大小)?
- eval - Microsoft PowerApps 的 Eval() 函数
- angular - Angular 5.2 材质组件如何去除多余的空格
- php - sys_getloadavg() 在 PHP 7.2.4 中返回 false
- python - `create_task()` 的任务何时在 asyncio 中执行?
- java - 无法使用 Google Places api 限制每个循环