# 开启多线程的方式一 # from threading import Thread # import time # # 定义需要多线程执行的代码 # def func(n): # time.sleep(1) # print(n) # # 定义一个类 # class MyThread(Thread): # # 如果要传参数要定义初始化方法 # def __init__(self,num): # # 要先执行父类的初始化方法 # super().__init__() # # 定义自己属性 # self.num = num # # 重写run方法,当线程开启时,自动调用此方法 # def run(self): # func(self.num) # # if __name__ == '__main__': # for i in range(10): # # 实力化一个线程对象 # t = MyThread(i) # # 开启线程,调用MyThread重写的run方法 # t.start() # 开启多线程方法二 # from threading import Thread # import time # # def func(n): # time.sleep(1) # print(n) # if __name__ == '__main__': # for i in range(10): # t = Thread(target=func,args=(i,)) # t.start() ''' Python多线程关于GIL(全局解释器锁)的相关信息: 1.GIL锁的特性不是python语言所有的,是CPython解释器所有的 2.GIL锁锁的是线程,不是代码块 3.GIL锁使得同一时间内,只有一个线程能够访问CPU,所以GIL锁作用下的Python多线程并不是真正意义的并行,即使CPU个数有多个,同一时间也能访问一个 4.大多数场景下,程序都是高IO型,因此多线程作用还是非常明显 5.高IO场景下推荐使用多线程,高CPU场景下推荐使用多进程 ''' # 关于线程的几个小方法 # import threading # # def func(): # # 获取线程名 # t_info = threading.current_thread() # print(t_info.name) # # 获取线程ID # print(t_info.ident) # if __name__ == '__main__': # for i in range(10): # t = threading.Thread(target=func) # t.start() # # 活跃线程的个数 # print("活跃线程数:",threading.active_count())
Python之多线程
最新推荐文章于 2024-07-17 19:59:32 发布