zoukankan      html  css  js  c++  java
  • python async异步编程(一)

    可参见python官方文档:https://docs.python.org/zh-cn/3.7/library/asyncio-eventloop.html

    一、事件循环

    事件循环:是python异步编程中重要的一个环节;可以理解未就是一个死循环,这个死循环会去检测并执行某些代码。

    例如:

    # 伪代码
    列表 = [任务1,任务二,任务三]
    
    while True:
        可执行的任务列表,已完成的任务列表 = 去任务列表检测所有任务,将“可执行”和“已完成”的任务返回
        for 就绪任务  in  就绪任务列表:
            执行就绪恩物
    
        for 已完成的任务  in  已完成的任务列表:
            在任务列表中移除已完成的任务
    
        如果任务列表中所有任务完成,则终止循环

    python代码如下:

    import asyncio
    
    # 生成一个事件循环
    loop = asyncio.get_event_loop()
    # 将任务放到任务列表去执行
    loop.run_until_complate(tasks)

    二、携程函数与携程对象

    携程函数:python3.5之后使用  async  def  函数名,定义的函数就叫携程函数

    携程对象:执行携程函数   函数名(),得到的就是携程对象

    async  def  func():
        print("哈哈哈哈哈")
    
    # 调用携程函数不会执行该函数内部代码
    result = func()

    如何让携程函数得到执行:

    如果要运行携程对象,必须将携程对象交给事件循环来处理

    import asyncio
    async def func(): print("哈哈哈") result = func()
    loop = asyncio.get_event_loop()
    loop.run_until_complate(result)

    # python3.7之后有更简单的方法
    asyncio.run(result)

      

    博客里大都是转载的内容,其目的主要用户知识的组织和管理。
  • 相关阅读:
    微博深度学习平台架构和实践
    2020暑期学习
    2020春季学期个人课程总结
    人月神话阅读笔记03
    人月深化阅读笔记02
    第十六周学习总结
    人月神话阅读笔记01
    三分算法
    [SDOI2010]魔法猪学院
    【洛谷】NOIP2018原创模拟赛DAY1解题报告
  • 原文地址:https://www.cnblogs.com/liyuanhong/p/15600908.html
Copyright © 2011-2022 走看看