asyncio.run_forever()下动态添加任务

方法一、asyncio.run_coroutine_threadsafe(coroutine, loop)

方法二、asyncio.call_soon_threadsafe(callback, *args, context=None)

方法一、实例run_coroutine_threadsafe

通过添加新的coroutin对象,放入loop内,动态添加。(爬虫正解)

import asyncio
import timefrom threading import Threaddef start_loop(loop):asyncio.set_event_loop(loop)print("start loop", time.time())loop.run_forever()async def do_some_work(x):print('start {}'.format(x))await asyncio.sleep(x)print('Done after {}s'.format(x))new_loop = asyncio.new_event_loop()
t = Thread(target=start_loop, args=(new_loop,))
t.start()asyncio.run_coroutine_threadsafe(do_some_work(6), new_loop)
asyncio.run_coroutine_threadsafe(do_some_work(4), new_loop)

方法二、实例call_soon_threadsafe

如果是io操作,就会相当于变成线程去阻塞执行添加进去的函数,密集型则没关系。

import asyncio
import time
from threading import Threaddef start_loop(loop):asyncio.set_event_loop(loop)print("start loop")loop.run_forever()def more_work(x):print('start work {}'.format(x))time.sleep(x)print('Finished work {}'.format(x))new_loop = asyncio.new_event_loop()
t = Thread(target=start_loop, args=(new_loop,))
t.start()new_loop.call_soon_threadsafe(more_work, 6)
new_loop.call_soon_threadsafe(more_work, 3)

python3 异步 asyncio 动态添加任务相关推荐

  1. python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用

    asyncio asyncio 是用来编写 并发 代码的库,使用 async/await 语法. asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库, ...

  2. python3 异步 asyncio get_event_loop new_event_loop 使用

    首先,event loop 就是一个普通 Python 对象,您可以通过 asyncio.new_event_loop() 创建无数个 event loop 对象.只不过,loop.run_xxx() ...

  3. layui-tree实现Ajax异步请求后动态添加html元素

    最近在弄一个产品分类管理,是一个树形菜单的形式,用的是layui-tree ,由于它并没有动态添加节点,所以只能自己刚了. 大概效果如左图 具体的实现是当我鼠标移入"长袖"这个分类 ...

  4. python3 异步错误 asyncio.Semaphore RuntimeError: Task got Future attached to a different loop

    错误现象 asyncio.Semaphore RuntimeError: Task got Future attached to a different loop asyncio.Semaphore ...

  5. [进阶] --- Python3 异步编程详解(史上最全篇)

    [进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...

  6. Celery 动态添加定时任务生产实践

    一.背景 实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本 通过celery 实现调度主要思想是 通过引入中间人redis,启动 worker 进行任务执行 ,c ...

  7. html5 作业调度,Net作业调度(五)—quartz.net动态添加job设计

    介绍 在实际项目使用中quartz.net中,都希望有一个管理界面可以动态添加job,而避免每次都要上线发布. 也看到有园子的同学问过.这里就介绍下实现动态添加job的几种方式, 也是二次开发的核心模 ...

  8. pyqt5动态添加按钮

    QMainWindow动态添加按钮,添加后需要调用show(),才可以显示出来. self.start_file_aaa = QPushButton(self) self.start_file_aaa ...

  9. 【javascript 动态添加数据到 HTML 页面】

    今天简单的学习了一下有关对象字面量的定义和 javascript 如何取出对象字面量的值的知识,javascript 动态添加数据到 HTML 页面的问题. [学习目标]有如下的一组数据通过 Ajax ...

最新文章

  1. ZOJ1041-Transmitters【差积,计算几何】
  2. PID控制器改进笔记之六:改进PID控制器之参数设定
  3. 结对编程 - 马尔科夫链
  4. Java基础学习总结(123)——Java异常处理原则
  5. 【线程】——初识线程
  6. android开发之播放音乐的方法
  7. 海运业务常用缩略语 一
  8. C++项目经验(6)——yaml-cpp的安装、报错解决及使用
  9. 常微分方程机敏问答简介
  10. c语言实现sdcch信道编码译码,gsm信道编码办法及分类
  11. java smali_如何把java代码转换成smali代码
  12. unknownhostexception错误解决方案
  13. 可见首发《模式识别与智能计算:MATLAB技术实现(第2版)》 百度网盘 下载 分享
  14. 【人工智能Prolog】ancestor 递归
  15. Mysql中B+Tree索引相关知识点
  16. vue3+ts+vant移动端H5项目搭建
  17. 《周志明的软件架构课》学习笔记 Day15
  18. iphone原彩显示对眼睛好吗_iPhone x手机原彩显示烧屏怎么办呢
  19. 阿里云CentOS7下载地址
  20. 《概率论与数理统计》手写笔记

热门文章

  1. Python 笔试集(4):True + True == ?
  2. Linux内核移植之一:内核源码结构与Makefile分析
  3. 动态阈值--大津法理解
  4. 中国人工智能学会通讯——人工智能如何造福人类 1.1 人工智能是中性技术
  5. div+css命名规范大全
  6. selenium操作浏览器cookie方法
  7. 自学Java-运算符
  8. 原型继承与属性拷贝的混合应用
  9. Marshal.Copy 之 startIndex 参数的含义
  10. VMware使用方法