• 10.24 Event事件,进程池与线程池,协程


    Event事件

    作用

    由一些线程控制另一些线程的执行

    from thearding import Event
    e = Event()
    e.wait() #标记为False
    e.set() #标记为True
    

    进程池与线程池

    什么是进程池与线程池

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

    进程池与线程池的作用

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

    如何使用

    from concurrent.futures import ProcessPollExecutor
    ProcessPollExecutor(5) #代表只能开启5个进程
    ProcessPollExecutor() #默认CPU个数限制进程数
    ThreadPollExecutor(5) #5代表只能开启5个线程
    ThreadPollExecutor() #默认CPU个数*5限制线程数
    

    回调函数

    def call_back(res):
    	print(type(res))
    	#注意:赋值操作不要与接收值同名
    	res2 = res.result()
    	print(res2)
    

    会让所有线程池的任务结束后才能继续执行下面的代码

    协程

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

    目的

    操作系统

    多道技术,切换+保存状态
    遇到IO
    CPU执行时间过长

    协程

    通过手动模拟操作系统"多道技术",实现切换+保存状态
    手动实现遇到IO,欺骗操作系统误以为没有IO操作
    单线程 遇到IO 切换+保存状态
    单线程 计算密集型,来回切换+保存状态,反而效率降低
    优点:
    在IO密集型情况下,会提高效率
    缺点:
    若在计算密集型情况下,会降低效率

    如何实现协程

    切换+保存状态
    并发:切换
    yield:保存状态

  • 相关阅读:
    在asyncio 中跳出正在执行的task
    运行代码框代码
    GridView单击行
    J2ME 使用HTTP网络连接实现排行榜
    Oxite的配置
    如何使用vs2005自带的sql2005
    点击右键出现导航菜单效果
    J2ME播放声音CODE
    将行为层和结构层分离 Html文档
    图片横向无缝滚动
  • 原文地址:https://www.cnblogs.com/793564949liu/p/11733953.html
Copyright © 2020-2023  润新知