Python 线程

本文介绍了Python中多线程的概念,包括主线程的默认创建,以及如何通过创建额外线程来提高程序效率。讲解了多线程的基本用法,如继承Thread类,互斥锁的应用,队列操作,以及如何利用线程池来高效地分配任务。
程序在运行是会默认创建一个线程,这就是主线程,有时一个主线程运行会很慢,这时可以创建一个或多个另外到线程在进行任务,这就是多线程
    导入时间模块
    import time
    导入线程模块
    from threading import Thread
  • 多线程的基本用法

      要执行的方法
      def func():
           print('start\n')
           time.sleep(2)
           print('end\n')
    
    
       if __name__ == '__main__':
      
          创建一个列表,用于装子线程对象
           t_list = [];
      
           for i in range(100):
              创建一个子线程对象,将要执行的方法给它
               t = Thread(target=func)
               添加到列表中
               t_list.append(t)
      
      
          循环遍历每个子线程,并开始执行
           for i in t_list:
               i.start()
      
          
          循环遍历每个列表,并等待每个子线程执行完
           for i in t_list:
               i.join()#等待线程结束,谁调用,就等待谁
      
           print('主线程结束')
    
  • 声明一个类继承Thread 使用多线程

      class myThread(Thread):
      
          初始化
          def __init__(self):
              super(myThread, self).__init__()
      
      
          def run(self):#必须要写,线程执行的内容
      
              print('1111\n')
              time.sleep(2)
              print('end\n')
    
    
    
      if __name__=='__main__':
      
          循环
          for i in range(10):
      
              t = myThread()
              t.setDaemon(True)#设置子线程的守护线程,当主线程结束,子线程也结束
              t.start()
      
          print('主线程结束了')
    
  • 互斥锁

      因为系统中的资源是共享的,所以,有时会有多个线程同时访问一个内容,会不安全,所以要加个一个锁,来保证同时只用一个线程访问
    
    
      导入Lock莫款
      from threading import Lock
      
      锁实例
      lock = Lock()
      
      lock.acquire()#加锁
      ---这里是需要加锁的地方---
      lock.release()#解锁
    
  • 队列

      导入队列模块
      import queue
      
      q = queue.Queue(3)#实例 指定队列长度
      q.put(1)#添加一个元素进队列
      q.put(2)#添加
      q.put(3)#添加
      print(q.get())#获取一个元素从队列
      print(q.get())#获取
      print(q.get())#获取
      
      #put在队列满了后,阻塞线程
      #get在队列空了后,阻塞线程
      #q.qsize()#获取队列的长度
    
  • 线程池

    主线程将任务提交给线程池,并不关心是哪个线程执行的,线程池则负责接受任务,将任务分配给空闲的线程去执行

      #线程池
      #python内置线程池
      导入线程池
      from multiprocessing.pool import ThreadPool
      导入时间模块
      import time
      
      pool = ThreadPool()#实例化线程池
    
      要执行的方法
      def helloLiping():
          print('start\n')
          time.sleep(2)
          print('end\n')
      
      
      for i in range(10):
          pool.apply_async(helloLiping)#添加任务到线程池
      
      pool.close()#关闭
      pool.join()#等待线程执行完成
    
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值