多线程 进程 应用程序的执行实例 有独立电脑内存空间和系统资源 独立 进程之间很难共享数据 线程 CPU调度和分派的基本单位 进程当中的子任务 不能单独存在 CPU执行的最小单位 线程不安全 import threading print([x for x in range(9)]) thread=threading.current_thread() thread.setName('主线程') print('thread name:',thread.getName()) 正在运行的线程 new_th=threading.enumerate() print('正在运行的线程:',len(new_th)) 正在运行的线程数量 print('正在运行的线程个数:',threading.active_count()) # # # 线程类 import threading,time class Mythread(threading.Thread): def __init__(self): super().__init__(self) 或 threading.Thread.__init__(self) print('Mythread __init__()') def run(self): for i in range(10): print(self.getName(),i) 时间休眠 time.sleep(0.1) t1=Mythread() t2=Mythread() 声明俩个线程同时启动 run 从上往下执行 start 交替执行 t1.start() t2.start() for i in range(10): print(threading.current_thread().getName(),i) time.sleep(0.5) 如果主线程执行到5 线程1强行加入 全部执行完 才开始再执行主线程 if i==5: 谁调用谁就被停止 主线程调用t1 0.2 等待时长 就开始恢复到就绪状态 t1.join(0.2) new_th=threading.enumerate() print('正在运行的线程:',new_th) # 函数 线程必须依赖函数实现 不能单独运行 import threading,time nums=100; # 资源共享 def something(x): for i in range(1,x): global nums nums=nums+1 print(nums) time.sleep(0.2) d=threading._start_new_thread(something,(11,)) #必须是元组 d=threading._start_new_thread(something,(11,)) print(type(d)) input() # # # 抢火车票 # import threading,time nums=50; count=0 def something(x): global nums,count while True: if nums==0: return nums=nums-1 count=count+1 print('{0}抢到了{1} 剩余{2}'.format(x,count,nums)) threading._start_new_thread(something,('张三',)) threading._start_new_thread(something,('李四',)) threading._start_new_thread(something,('王五',)) print( threading.enumerate()) input() import threading,time nums=50 count=0 lock=threading.Lock #创建一把锁 Cond=threading.Condition(lock=lock) #管理一把锁 class qiangpiao(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.setName() def run(self): global nums,count while True: Cond.acquire() #当那个线程获得了资源就加锁 if nums==0: return nums=nums-1 count=count+1 print('{0}抢到了{1} 剩余{2}'.format(self.setName(),count,nums)) time.sleep(0.1) Cond.release() #当哪个线程完成了处理 就解开锁 if __name__=='__main__': huangniu=qiangpiao('黄牛') shouji=qiangpiao('手机') chuangkou=qiangpiao('窗口') huangniu.start() shouji.start() chuangkou.start()
多线程
最新推荐文章于 2024-12-01 23:55:34 发布