Python同时执行多条shell命令
求助万能的uu们,我现在知道
subprocess.run('cmd1', shell=True)
可以执行单条shell命令,如果是
subprocess.run('cmd1', shell=True)
subprocess.run('cmd2', shell=True)
则会顺序执行两条命令。
同时,我知道
subprocess.Popen('cmd1', shell=True)
subprocess.Popen('cmd2', shell=True)
可以同时执行两条命令,但是不会阻塞
我现在希望能同时执行两条shell命令,并保证两条命令执行完毕,再执行后续的代码,应该怎么办? 本帖最后由 suchocolate 于 2022-11-9 00:22 编辑
c1 = subprocess.Popen('cmd1', shell=True)
c2 = subprocess.Popen('cmd2', shell=True)
c1.wait()
c2.wait()
另外,上面理论上并不是同时执行,想真同时执行,你需要multiprocessing或threading库。 suchocolate 发表于 2022-11-9 00:20
另外,上面理论上并不是同时执行,想真同时执行,你需要multiprocessing或threading库。
谢谢您的解答,加了wait()命令已经完全可以解决我的问题。抱着学习的态度还想知道一下,multiprocessing库如何实现同时执行多条shell命令,并等待命令执行完毕再执行后续代码? 本帖最后由 jackz007 于 2022-11-9 00:40 编辑
同时执行多条命令,命令之间用 && 连接即可,只有前面的命令正常结束才会执行后面的命令,否则,后面的命令会夭折。
os . system('cmd1 && cmd2') TenSuns 发表于 2022-11-9 00:29
谢谢您的解答,加了wait()命令已经完全可以解决我的问题。抱着学习的态度还想知道一下,multiprocessing ...
这个需要看看多线程和多进程相关的书。
菜鸟上只有简单的多线程:https://www.runoob.com/python3/python3-multithreading.html jackz007 发表于 2022-11-9 00:35
同时执行多条命令,命令之间用 && 连接即可,只有前面的命令正常结束才会执行后面的命令,否则,后 ...
我觉得; && || 都不算真正的同时 非常感谢大家的解答,我又查找了一些资料,其实我并不要求绝对同时执行,只是想尽可能的同时执行多个任务,以达到节省时间的目的,目前的信息已经足够解决问题。再次感谢大家! TenSuns 发表于 2022-11-9 10:32
非常感谢大家的解答,我又查找了一些资料,其实我并不要求绝对同时执行,只是想尽可能的同时执行多个任务, ...
如果不要求绝对同时,可以按这种方式:subprocess.run('cmd1;cmd2;cmd3', shell=True)
;本身是shell里一次输入多个命令的分隔符 suchocolate 发表于 2022-11-9 10:47
如果不要求绝对同时,可以按这种方式:
;本身是shell里一次输入多个命令的分隔符
非常感谢您的耐心解答,我仔细学习一下
页:
[1]