我想创建一个python脚本,它可以启动bash脚本的多个实例。
我试过了
import subprocess
commands = '''
bashcmd1
bashcmd2
bashcmd3
'''
process = subprocess.Popen('/bin/bash', stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = process.communicate(commands)
print out但它在bashcmd2处停止,只有在我点击CTRL+C时才会继续。
发布于 2018-02-09 21:30:15
您只需运行一个bash,其中包含3个命令。
如果命令没有设置变量或相互依赖(否则您将无法并行化它们),也许您可以创建3个subprocess.Popen实例:
commands = '''
bashcmd1
bashcmd2
bashcmd3
'''
for process in [subprocess.Popen(['/bin/bash', '-c', line], stdout=subprocess.PIPE)
for line in commands.split("\n") if line]: # filter out blank lines
out, err = process.communicate() # or just rc = process.wait()
# print out & err该命令首先创建Popen对象的列表理解(list not generator,以便进程立即启动),然后执行communicate以等待完成(但同时其他进程正在运行)
优点是,您可以将此技术应用于任何包含命令的脚本,并且不需要使用外壳&功能(更便于移植,包括Windows,如果您使用["cmd","/c"前缀而不是bash)
https://stackoverflow.com/questions/48706774
复制相似问题