多线程与网络编程-python学习

    SEO基础 wuya 50次浏览 已收录 0个评论

    线程简介

    • 线程可以认为是轻量级的进程。
    • 一个进程都要至少一个线程(主线程)
    • 一个进程想要实现多任务,可以创建多个线程
    • 进程之间数据是独立的,同一进程下的线程之间数据是共享的
    • 线程是CPU分配时间的最小单位,进程与线程的调度都是操作系统的事

    线程模块

    • _thread:低级模块
    • threading:高级模块,是对_thread模块的封装,推荐使用

    _thread

    • 示例:
      import _thread
      import time
      
      def loop(num):
          print('子线程开始')
          print('子线程任务', num)
          print('子线程结束')  
          
      if __name__ == '__main__':
          print('主线程开始')
          _thread.start_new_thread(loop, (250,))
          time.sleep(2)
          print('主线程开始')

    threading

    • 基本使用
      import threading
      import time
      
      def run(file):
          print(file, '开始下载')
          # 获取当前线程
          ct = threading.current_thread()
          print('子线程:', ct.name)
          for i in range(6):
              time.sleep(1)
              print('进度{}%'.format(i * 20))
          print(file, '下载完成') 
          
      if __name__ == '__main__':
          print('主线程开始')      
          # 获取主线程
          mt = threading.main_thread()
          print('主线程:', mt.name)
      
          # 获取当前线程
          ct = threading.current_thread()
          print('当前线程', ct.name)
      
          # 创建子线程
          thr = threading.Thread(target=run, args=('meinv.jpg',), name='图片下载')
      
          print('下载线程启动前,活跃线程数:', threading.active_count())
          print('下载线程状态:', thr.is_alive())
      
          # 启动线程
          thr.start()
      
          print('下载线程启动后,活跃线程数:', threading.active_count())
          print('下载线程状态:', thr.is_alive())
      
          # 查看线程信息
          print('线程信息:', threading.enumerate())
      
          # 等待子线程结束
          thr.join()
      
          print('主线程结束')

    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明多线程与网络编程-python学习
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址