运行 在后台运行的单个调用中一个接一个的子进程
Run one subprocess after another in a single call that works in the background
为了运行一个子进程在后台不影响主代码的连续性我这样调用Python文件:
Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
有什么方法可以调用 运行 第一个文件 ('secondary.py'
) 然后 运行 另一个文件 ('tertiary.py'
) 当它完成进程?
例如:
Popen(['secondary.py','tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
注:
我不能这样称呼一个在另一个之下:
Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
Popen(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
因为它们会成为两个独立的子流程,这不是我的预期目标,我需要完成一个然后运行另一个。
subprocess.run
等待命令完成。您可以创建一个后台线程来连续运行您想要的所有命令。
import threading
import subprocess
def run_background():
subprocess.run(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
subprocess.run(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
bg_thread = threading.Thread(target=run_background)
bg_thread.start()
因为这没有被标记为守护线程,主线程将在退出程序时等待直到该线程完成。
为了运行一个子进程在后台不影响主代码的连续性我这样调用Python文件:
Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
有什么方法可以调用 运行 第一个文件 ('secondary.py'
) 然后 运行 另一个文件 ('tertiary.py'
) 当它完成进程?
例如:
Popen(['secondary.py','tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
注:
我不能这样称呼一个在另一个之下:
Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
Popen(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
因为它们会成为两个独立的子流程,这不是我的预期目标,我需要完成一个然后运行另一个。
subprocess.run
等待命令完成。您可以创建一个后台线程来连续运行您想要的所有命令。
import threading
import subprocess
def run_background():
subprocess.run(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
subprocess.run(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
bg_thread = threading.Thread(target=run_background)
bg_thread.start()
因为这没有被标记为守护线程,主线程将在退出程序时等待直到该线程完成。