我有一个子python脚本,它带有一个参数,大约需要一个。运行8分钟。
e.g. python.exe child.py "2018-01-01"
我需要从主脚本执行多次此脚本。我正在考虑使用subprocess.Popen
。
import os, sys, time, subprocess
for date in ["2018-01-01", "2018-01-02", "2018-01-03", ..., "2018-12-31"]
p = subprocess.Popen(['python.exe', "child.py", date])
time.sleep(600)
由于该Popen
函数不知道子脚本何时完成执行,因此它仅使用参数来触发子脚本。因此,我必须设置600秒的睡眠时间(比子脚本的大概运行时间更长),以便在上一次运行完成后安全地开始后续运行。
我想知道是否有更有效的方法来处理这种情况。
如果脚本需要同步运行,请考虑使用subprocess
。更具体地说,该run
函数(> = 3.5)。甚至是call
函数(<3.5),它与相同,run
但仅返回脚本中的代码。两者都阻止调用脚本,直到返回为止。
您的代码将变为:
import shlex
import subprocess
for date in ["2018-01-01", "2018-01-02", "2018-01-03", ..., "2018-12-31"]:
command = 'python.exe child.py %s' % date
args = shlex.split(command)
res = subprocess.run(args)
如果您需要它异步运行,请考虑使用xargs
。如果您确实需要在python中执行此操作,请使用multiprocessing
我们multiprocessing.dummy
来执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句