如何在使用subprocess按顺序运行列表时,仅在前一个文件结束时运行下一个文件



有一个列表,我想使用子进程顺序执行。当我想在执行前一个文件后才执行下一个文件时,应该使用什么方法?

for index in acnt_df.index:
            os.environ["a"] = str(acnt_df["acnt"][index])
            subprocess.Popen(
                ["python", "start.py"]
            )

我试过了,但是它在第一个文件结束之前打开了下一个文件

subprocess.run代替subprocess.Popen

for index in acnt_df.index:
    os.environ["a"] = str(acnt_df["acnt"][index])
    p = subprocess.run(["python", "start.py"])

subprocess模块的检出文档:

https://docs.python.org/3/library/subprocess.html

关于如何控制另一个正在运行的进程有非常细粒度的方法。如果您想使用Popen对象的全部功能,您可以使用

之类的内容。
for index in acnt_df.index:
    os.environ["a"] = str(acnt_df["acnt"][index])
    p = subprocess.Popen(["python", "start.py"])
    p.wait()

然而,当您调用python脚本时,建议将其更改为能够将其作为模块导入,并将a环境变量作为普通函数参数传递。即改变start.py,使其能够:

import start
for index in acnt_df.index:
    a = str(acnt_df["acnt"][index])
    start.main(a)

最新更新