我有一个脚本( a.py )需要多次调用另一个脚本( b.py ),每次执行 b.py < / strong>需要1分钟。如果我在for循环中运行,这需要花费很多时间。
我想知道如何优化这一点,以减少时间。 任何帮助或建议都会非常有帮助。
源代码:
# a.py
import os
if __name__ == '__main__':
inputs = ['file1', 'file2', 'file3', 'file4']
script_path = 'b.py'
# Some logging statements.
for infile in inputs:
os.system("{} -i {}".format(script_path, infile))
# b.py
# take arguments
# perform some operations
# log the execution
到目前为止,我一直在使用os.system
来调用另一个脚本。如何同时调用脚本 b.py n次?
答案 0 :(得分:0)
没有办法可以这样优化。如果要为列表中的每个项运行脚本b,则迭代是执行此操作的唯一方法。可能是您可以更改脚本b的内容以更快地运行,但这是一个不同的问题。
答案 1 :(得分:0)
您可以使用muliprocessing.Process
并行运行它:
from multiprocessing import Process
inputs = ['file1', 'file2', 'file3', 'file4']
script_path = 'b.py'
def run(script, name):
os.system("{} -i {}".format(script, name))
if __name__ == '__main__':
inputs = ['file1', 'file2', 'file3', 'file4']
script_path = 'b.py'
for infile in inputs:
p = Process(target=run, args=(script_path, infile))
p.start()
p.join()
注意:使用os.system
从Python脚本执行Python脚本并不是很优雅。您应该修改脚本b.py
,使其作为一个模块,为其主要功能提供功能或类。然后,您可以导入b
并使用这些函数或类。