
python进程等待如何等待
用户关注问题
如何让Python中的子进程等待完成?
我在用Python启动了一个子进程,想知道怎样让主进程等待子进程执行完后再继续执行。
使用子进程的join()方法实现等待
在Python中,可以通过multiprocessing模块中的Process对象的join()方法让主进程阻塞等待子进程结束。调用join()会使主进程暂停,直到对应的子进程执行完毕。示例代码如下:
from multiprocessing import Process
import time
def worker():
time.sleep(3)
print('子进程结束')
p = Process(target=worker)
p.start()
p.join() # 等待子进程完成
print('主进程继续执行')
Python如何实现多个进程的同步等待?
如果我启动了多个子进程,想让主进程在所有子进程执行完后一起继续,应该怎么做?
调用每个子进程的join()确保全部完成
可以对每个子进程都调用join()方法,主进程会依次等待所有子进程完成。示例代码:
from multiprocessing import Process
import time
def worker(num):
time.sleep(num)
print(f'子进程{num}结束')
processes = []
for i in range(3):
p = Process(target=worker, args=(i+1,))
p.start()
processes.append(p)
for p in processes:
p.join() # 等待所有进程完成
print('所有子进程结束,主进程继续')
使用Python的subprocess模块等待外部进程完成的方法有哪些?
我调用了外部程序想用Python等待它的执行完成,请问subprocess模块如何做到这点?
调用subprocess.run或者使用Popen对象的wait()
subprocess模块提供多种方式执行并等待外部进程结束。
- 使用subprocess.run():该方法在调用时会阻塞,直到程序执行结束,返回一个CompletedProcess对象。
import subprocess
result = subprocess.run(['ls', '-l'])
print('程序执行完毕')
- 使用subprocess.Popen启动并通过wait()等待:
import subprocess
p = subprocess.Popen(['ls', '-l'])
p.wait() # 阻塞直到进程结束
print('外部程序执行完毕')