python3 异步 asyncio 动态添加任务
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 动态添加任务相关推荐
- python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用
asyncio asyncio 是用来编写 并发 代码的库,使用 async/await 语法. asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库, ...
- python3 异步 asyncio get_event_loop new_event_loop 使用
首先,event loop 就是一个普通 Python 对象,您可以通过 asyncio.new_event_loop() 创建无数个 event loop 对象.只不过,loop.run_xxx() ...
- layui-tree实现Ajax异步请求后动态添加html元素
最近在弄一个产品分类管理,是一个树形菜单的形式,用的是layui-tree ,由于它并没有动态添加节点,所以只能自己刚了. 大概效果如左图 具体的实现是当我鼠标移入"长袖"这个分类 ...
- 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 ...
- [进阶] --- Python3 异步编程详解(史上最全篇)
[进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...
- Celery 动态添加定时任务生产实践
一.背景 实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本 通过celery 实现调度主要思想是 通过引入中间人redis,启动 worker 进行任务执行 ,c ...
- html5 作业调度,Net作业调度(五)—quartz.net动态添加job设计
介绍 在实际项目使用中quartz.net中,都希望有一个管理界面可以动态添加job,而避免每次都要上线发布. 也看到有园子的同学问过.这里就介绍下实现动态添加job的几种方式, 也是二次开发的核心模 ...
- pyqt5动态添加按钮
QMainWindow动态添加按钮,添加后需要调用show(),才可以显示出来. self.start_file_aaa = QPushButton(self) self.start_file_aaa ...
- 【javascript 动态添加数据到 HTML 页面】
今天简单的学习了一下有关对象字面量的定义和 javascript 如何取出对象字面量的值的知识,javascript 动态添加数据到 HTML 页面的问题. [学习目标]有如下的一组数据通过 Ajax ...
最新文章
- ZOJ1041-Transmitters【差积,计算几何】
- PID控制器改进笔记之六:改进PID控制器之参数设定
- 结对编程 - 马尔科夫链
- Java基础学习总结(123)——Java异常处理原则
- 【线程】——初识线程
- android开发之播放音乐的方法
- 海运业务常用缩略语 一
- C++项目经验(6)——yaml-cpp的安装、报错解决及使用
- 常微分方程机敏问答简介
- c语言实现sdcch信道编码译码,gsm信道编码办法及分类
- java smali_如何把java代码转换成smali代码
- unknownhostexception错误解决方案
- 可见首发《模式识别与智能计算:MATLAB技术实现(第2版)》 百度网盘 下载 分享
- 【人工智能Prolog】ancestor 递归
- Mysql中B+Tree索引相关知识点
- vue3+ts+vant移动端H5项目搭建
- 《周志明的软件架构课》学习笔记 Day15
- iphone原彩显示对眼睛好吗_iPhone x手机原彩显示烧屏怎么办呢
- 阿里云CentOS7下载地址
- 《概率论与数理统计》手写笔记