# coding=utf-8import asyncio
import functools
import logginglogging.basicConfig(level=logging.INFO,format="%(asctime)s [*] %(process)d %(processName)s %(message)s"
)def callback01 (args, *, kwargs="defalut"):print(f"\t普通函数做为回调函数,获取参数:{args},{kwargs}")def callback02 (n):print(f"\t callback02 {n} invoked")def callback03 (n, loop):print(f"\t callback03 {n} 运行时间点{loop.time()}")async def result1 ():print("\t这是result1协程")return "result1"async def result2 (arg):print("\t这是result2协程")return f"result2接收了一个参数,{arg}"async def main (loop):print("1.主协程------------------------------------------------")print("\t等待result1协程运行")res1 = await result1()  # 异步阻塞(等待另一个协程)print("\t等待result2协程运行")res2 = await result2(res1)  # 异步阻塞(等待另一个协程)await asyncio.sleep(1)print("2.注册callback01----------------------------------------")loop.call_soon(callback01, 1)# 改变函数的默认参数wrapped = functools.partial(callback01, kwargs="not defalut")loop.call_soon(wrapped, 2)await asyncio.sleep(0.1)print("3.注册callback02----------------------------------------")loop.call_later(0.2, callback02, 1)  # 延时去调用一个函数loop.call_later(0.1, callback02, 2)  # 第一个参数越小,越先执行。loop.call_soon(callback02, 3)  # 会在call_later之前执行,和它的位置在哪无关await asyncio.sleep(1)print("4.注册callback03----------------------------------------")now = loop.time()print("\t 当前的内部时间(循环时间):", now)loop.call_at(now + 0.1, callback03, 1, loop)  # 第一个参数的含义代表的是一个单调时间loop.call_at(now + 0.2, callback03, 2, loop)loop.call_soon(callback03, 3, loop)await asyncio.sleep(1)return (res1, res2)if __name__ == '__main__':loop = asyncio.get_event_loop()try:print("进入事件循环...")result = loop.run_until_complete(main(loop))print(f"获取返回值:{result}")finally:print("关闭事件循环...")loop.close()

输出:

进入事件循环...
1.主协程------------------------------------------------等待result1协程运行这是result1协程等待result2协程运行这是result2协程
2.注册callback01----------------------------------------普通函数做为回调函数,获取参数:1,defalut普通函数做为回调函数,获取参数:2,not defalut
3.注册callback02----------------------------------------callback02 3 invokedcallback02 2 invokedcallback02 1 invoked
4.注册callback03----------------------------------------当前的内部时间(循环时间): 363699.437callback03 3 运行时间点363699.437callback03 1 运行时间点363699.546callback03 2 运行时间点363699.625
获取返回值:('result1', 'result2接收了一个参数,result1')
关闭事件循环...

asyncio call_at,call_soon和call_later用法相关推荐

  1. asyncio中的call_soon、call_later、call_at、call_soon_threadsafe方法

    call_soon方法用于在协程中执行一些普通函数,在执行的时候需要使用run_forever方法,而不是使用run_until_complete方法因为该方法不是协程方法 import asynci ...

  2. Python Asyncio 所有异步协程库用法详解

    title: Asyncio并发编程 copyright: true top: 0 date: 2019-04-03 14:09:24 tags: Asyncio categories: Python ...

  3. python asyncio 并发编程_asyncio并发编程

    一. 事件循环 1.注: 实现搭配:事件循环+回调(驱动生成器[协程])+epoll(IO多路复用),asyncio是Python用于解决异步编程的一整套解决方案: 基于asynico:tornado ...

  4. gj13 asyncio并发编程

    13.1 事件循环 asyncio 包含各种特定系统实现的模块化事件循环 传输和协议抽象 对TCP.UDP.SSL.子进程.延时调用以及其他的具体支持 模仿futures模块但适用于事件循环使用的Fu ...

  5. python asyncio future_Python asyncio.isfuture方法代码示例

    本文整理汇总了Python中asyncio.isfuture方法的典型用法代码示例.如果您正苦于以下问题:Python asyncio.isfuture方法的具体用法?Python asyncio.i ...

  6. asyncio之Coroutines,Tasks and Future

    asyncio之Coroutines,Tasks and Future Coroutines and Tasks属于High-level APIs,也就是高级层的api. 本节概述用于协程和任务的高级 ...

  7. python asyncio future_Python asyncio.ensure_future方法代碼示例

    本文整理匯總了Python中asyncio.ensure_future方法的典型用法代碼示例.如果您正苦於以下問題:Python asyncio.ensure_future方法的具體用法?Python ...

  8. 协程asyncio_Asyncio深入浅出

    Asyncio是一个异步编程的框架,可以解决异步编程,协程调度问题,线程问题,是整个异步IO的解决方案. 在学习asyncio之前,我们先来理清楚同步/异步的概念: 同步是指完成事务的逻辑,先执行第一 ...

  9. 【进阶】 --- 多线程、多进程、异步IO实用例子

    [进阶] --- 多线程.多进程.异步IO实用例子:https://blog.csdn.net/lu8000/article/details/82315576 python之爬虫_并发(串行.多线程. ...

最新文章

  1. javascript优化_如何通过使用服务人员来优化JavaScript应用
  2. UITableView全面解析
  3. pandas-datareader
  4. 枚举实现单例singleton
  5. HDU3400(计算几何中的三分法利用)
  6. TypeScript class 的静态成员变量
  7. .net core编写转发服务
  8. 电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?
  9. 织梦蓝色简洁大气电脑操作系统软件下载网站模板 带手机版
  10. PL/SQL Developer使用笔记
  11. 新概念第二册 Lesson 1 句子 结构 分析
  12. 小型微型计算机怎么样,电脑小主机怎么样,全方位分析小型电脑主机优缺点
  13. android MD风格组件(BottomNavigationView,配合lottie使用) (三)
  14. python猜拳游戏
  15. java localdate获取自然周
  16. 即有分期 提前还款手续费就是不在办理的时候告诉你
  17. mysql在手游中的作用_数据库虚拟化技术_手游业务MySQL数据库虚拟化漫谈 | By 肖力-云栖社区...
  18. Android零基础入门第1节:Android的前世今生
  19. gitlab快速入门
  20. 李宏毅深度学习_homework01

热门文章

  1. R语言ggplot2绘图教程——Pathway富集分析气泡图
  2. SpringBoot监控
  3. 心理测评软件有哪些?心理测评系统功能及优势详解
  4. 湿度控制c语言程序,基于51单片机的湿度控制系统设计.doc
  5. android wifi软开关,rfkill 无线设备软开关
  6. 电桥 应变片 误差来源及改进 思考题
  7. 软件智能的大致呈现---aaas系统预期
  8. JNPF移动办公解决方案
  9. 产业区块链一周动态丨蚂蚁集团计划上市,苏州成立10亿元区块链基金
  10. android 中怎么实现点击了对话框的按钮以后对话框不会消失,android 中怎么实现点击了对话框的按钮以后对话框不会消失...