版权声明:风火编程, 欢迎指正. https://blog.csdn.net/weixin_42620314/article/details/81987466
Python多线程
python多线程机制
python的多线程是基于时间片段的轮转和GIL锁实现的, 所以python并不存在真正意义上的多线程. 因此只适用于在IO密集型的程序中使用, 对于计算密集型的程序,由于锁的竞争机制,多线程不仅不会提高效率,还会导致效率降低, 甚至卡死. 如果硬件允许的情况下,可以选择使用多进程.
python的多线程模块threading 当中有个join()方法, 叫做自旋锁, 是更高级的锁. 在多线程创建并开启之后调用. 会导致主线程阻塞但是需要注意: 在只开启一个子线程的时候调用join(), 子线程结束之后主线程继续执行, 多线程不发挥作用.当有多个子线程调用join()的时候, 多个子线程之间会自动将进行切换. 所有子线程结束之后主线程继续.
DEMO
# coding: utf-8
from time import time, sleep
from threading import Thread
t_list = []
def tf(s):
tt = time()
sleep(s)
print(tt)
if __name__ == '__main__':
for i in range(3):
t = Thread(target=tf, args=(3,))
t_list.append(t)
for t in t_list:
t.start()
for t in t_list:
t.join()