• 进程池与线程池


    Event事件

    Event事件的作用

    用来控制线程的执行,由一些线程去控制另一些线程

    进程池与线程池

    1. 什么是进程池与线程池

      进程池与线程池是用来控制当前程序允许创建(进程/线程)的数量

    2. 进程池与线程池的作用

      保证在硬件允许的范围内创建(进程/线程)的数量

    3. 如何使用

      from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
      import time
      
      # ProcessPoolExecutor(5)  # 5代表只能开启5个进程
      # ProcessPoolExecutor()  # 默认以CPU的个数限制进程数
      
      pool = ThreadPoolExecutor(5)  # 5代表只能开启5个线程 -5 +1 -1 +1 -1
      # ThreadPoolExecutor()  # 默认以CPU个数 * 5 限制线程数
      
      # t = Tread()  # 异步提交
      # t.start(0)
      
      
      
      # pool.submit('传函数地址')  # 异步提交任务
      # def task():
      #     print('线程任务开始了...')
      #     time.sleep(1)
      #     print('线程任务结束了...')
      #
      #
      # for line in range(5):
      #     pool.submit(task)
      
      
      # 异步提交任务
      # pool.submit('传函数地址').add_done_callback('回调函数地址')
      def task(res):
          # res == 1
          print('线程任务开始了...')
          time.sleep(1)
          print('线程任务结束了...')
          return 123
      
      
      # 回调函数
      def call_back(res):
          print(type(res))
          # 注意: 赋值操作不要与接收的res同名
          res2 = res.result()
          print(res2)
      
      
      for line in range(5):
          pool.submit(task, 1).add_done_callback(call_back)
      
      
      # 会让所有线程池的任务结束后,才往下执行代码
      # pool.shutdown()
      
      print('hello')
      

    协程

    1. 进程:资源单位
    2. 线程:执行单位
    3. 协程:在单线程下实现并发

    注意:协程不是操作系统资源,他是程序起的名字,为了让单线程能实现并发

    协程的目的

    • 操作系统:

      多道技术,切换+保存状态

      • 遇到IO
      • CPU执行时间过长
    • 协程

      通过手动模拟操作系统“多道技术”,实现 切换+保存状态

      • 手动实现 遇到IO切换,欺骗操作系统误以为没有IO操作
      • 单线程 计算密集型,来回切换+保存状态时,反而效率更低

      优点:

      在IO密集型的情况下,会提高效率

      缺点:

      若在计算密集型的情况下,来回切换,反而效率更低

      如何实现协程:切换+保存状态

      • yield:保存状态
      • 并发:切换
  • 相关阅读:
    Java基础知识:正则表达式
    NodeJs 中 将表单数据转发到后台
    单片机的远程升级
    一些开源协议
    物联网的一些例子
    python一些开源特色库
    qt练习
    网页编程学习笔记
    PCB相关
    工业控制系统
  • 原文地址:https://www.cnblogs.com/1012zlb/p/11773288.html
Copyright © 2020-2023  润新知