gpt4 book ai didi

python - Bash 正在等待 python 子进程

转载 作者:行者123 更新时间:2023-11-29 09:51:47 25 4
gpt4 key购买 nike

我有三个相互调用的脚本。它们是:

脚本1.sh:

s=`./script2.py`;
echo "DONE";

脚本2.py:

#!/usr/bin/env python3
import subprocess

subprocess.Popen(["./script3.py"])
print ("Exit script2")

脚本3.py:

#!/usr/bin/env python3
import time

time.sleep(20)
print ("child OK")

不幸的是,script1.sh 是第三方软件,我无法修改它。

script2.py 在后台启动 script3.py 并退出。它在命令行中运行良好。但是当 script1.sh 调用 script2.py 时,它正在等待 script3.py。所以,script1.sh 卡住了。我该如何避免?

最佳答案

问题是 script1.sh 正在捕获 stdout,而 python 在 script3.py 完成之前还没有完成对 stdout 的写入。

一个解决方案是将 script3.py 的标准输出发送到其他地方。例如,这允许 script1.sh 快速完成:

$ cat script2.py 
#!/usr/bin/env python3
import subprocess
import sys

subprocess.Popen(["./script3.py"], stdout=sys.stderr)
print ("Exit script2")

有了这个改变,script1.sh 很快退出,很久以后,child OK 出现在终端上。

关于python - Bash 正在等待 python 子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com