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