风火编程--python多线程

版权声明:风火编程, 欢迎指正. 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()

猜你喜欢

转载自blog.csdn.net/weixin_42620314/article/details/81987466