【问题标题】:Subprocessing in python [duplicate]python中的子处理[重复]
【发布时间】:2017-03-11 20:57:26
【问题描述】:

我想从父代码调用无限循环脚本。

from subprocess import Popen
import subprocess
import os
import sys
proc=subprocess.Popen([sys.executable, os.getcwd()+'/A.py'],shell=False, stdout=subprocess.PIPE)
print(proc.communicate())
print('Hi')

我的脚本是:

import time

def main():
    while True:
        print('HI2')
        time.sleep(3)
if __name__ == '__main__':
    main()`

但它不起作用并且 Popen 会阻止脚本。我的意思是为什么 print('Hi') 语法不起作用。

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    proc.communitcate() 等待 proc 完成。然后它返回子进程的输出。

    在这个例子中,out 是打印在 stdout 上的输出,而 err 是 stderr 上的输出:

    out, err = proc.communicate()
    

    如果您不需要输出,只需跳过communicate()

    【讨论】:

    • 您能告诉我如何终止无限子进程吗?
    • 你应该可以使用proc.terminate()for那个
    • 感谢您的回答。 E 子进程调用脚本,每个脚本内都有多进程。当我终止父进程(我的意思是关闭脚本)时,子进程仍然存在!!!
    • 如何关闭脚本?让它运行直到它自己终止?还是您使用 CTRL + C 之类的东西?
    • 如果你想让子进程自动终止,看看this question
    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2021-08-27
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多