线程
线程
-
什么是线程:能被操作系统调度(给CPU执行)的最小单位
-
同一个进程中的多个线程可以同时被CPU执行
-
线程的优缺点:
- 优点:资源共享,效率高,开启关闭切换时间开销小,可以被多个CPU调度,由操作系统负责调度
- 缺点:数据不安全
-
同一进程中的线程资源共享,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销小
-
gc: 垃圾回收机制(线程):
- 引用计数+分代回收
-
代码:
-
from threading import Thread n=100 def func(): global n n-=1 t_l=[] for i in range(100): t=Thread(target=func) t.start() t_l.append(t) for j in t_l: j.join() print(n) 得:0 #线程中资源共享
-
enumerate 列表 存储了所有的活着的线程对象 一个11个(包括主线程)(注:如果在导入线程中的enumerate 还想使用内置函数的enumerate 的时候就给线程中的enumerate 起个别名)
active_count 数字 计算活着的线程对象的总数
内部使用current_thread().ident来获取线程ID
from threading import Thread,current_thread import time class Mythread(Thread): def __init__(self,i): self.i=i super().__init__() def run(self): print(f'start{i}') print(current_thread().ident) # 从内部使用current_thread.ident来获取线程ID time.sleep(1) print(f'end{i}') for i in range(10): mythread=Mythread(i) mythread.start() print(active_count(), enumerate())
-