6、多进程执行的不确定性
author:14组开发周博文 欢迎各位老师与同学指导和指正!
- 默认情况下,多个进程的执行顺序和时间都是不确定的,完全取决于操作系统的调度。
import time
from multiprocessing import Process, current_process
def do_sth():
for i in range(5):
print(f"{i} => {current_process().name}")
time.sleep(2)
def main():
for _ in range(3):
# 创建三个子进程,调用do_sth
Process(target=do_sth).start()
# 父进程直接调用 do_sth
do_sth()
if __name__ == "__main__":
main()
- 代码中创建三个子进程,调用
do_sth
函数,以及父进程直接调用do_sth
函数,这四个进程会并行的运行,它们会并行的打印出当前进程的名称以及循环序号
运行结果:
0 => MainProcess 0 => Process-1
0 => Process-2
0 => Process-3
1 => MainProcess 1 => Process-1
1 => Process-3
1 => Process-2
2 => MainProcess 2 => Process-1
2 => Process-2
2 => Process-3
3 => MainProcess 3 => Process-1
3 => Process-3
3 => Process-2
4 => MainProcess 4 => Process-1
4 => Process-3
4 => Process-2
- 运行结果可以看出,在每次循环中,各个进程的执行顺序是不一样的(可能main - 1 - 2 - 3,也可能1 - 3 - 2 - main),再次证明了多进程执行的不确定性。