协程在python中怎么使用(python协程之动态添加任务的方法)
类别:脚本大全 浏览量:2543
时间:2022-01-27 01:10:09 协程在python中怎么使用
python协程之动态添加任务的方法python协程只能运行在事件循环中,但是一旦事件循环运行,又会阻塞当前任务。所以只能在当前进程中再开一个线程,这个线程的主要任务是运行事件循环,就是event_loop,因为他是一个无限循环,会阻塞当前线程。
放一个自己写的demo,注释写的很详细。
另外还有一点需要注意,一个事件循环中不能运行另外一个事件循环。
运行结果:
|
import asyncio from threading import thread async def production_task(): i = 0 while true: # 将consumption这个协程每秒注册一个到运行在线程中的循环,thread_loop每秒会获得一个一直打印i的无限循环任务 asyncio.run_coroutine_threadsafe(consumption(i), thread_loop) # 注意:run_coroutine_threadsafe 这个方法只能用在运行在线程中的循环事件使用 await asyncio.sleep( 1 ) # 必须加await i + = 1 async def consumption(i): while true: print ( "我是第{}任务" . format (i)) await asyncio.sleep( 1 ) def start_loop(loop): # 运行事件循环, loop以参数的形式传递进来运行 asyncio.set_event_loop(loop) loop.run_forever() thread_loop = asyncio.new_event_loop() # 获取一个事件循环 run_loop_thread = thread(target = start_loop, args = (thread_loop,)) # 将次事件循环运行在一个线程中,防止阻塞当前主线程 run_loop_thread.start() # 运行线程,同时协程事件循环也会运行 advocate_loop = asyncio.get_event_loop() # 将生产任务的协程注册到这个循环中 advocate_loop.run_until_complete(production_task()) # 运行次循环 |
以上这篇python协程之动态添加任务的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/qq_29349715/article/details/79730786
您可能感兴趣
- python如何判断两个数组相同(Python实现的合并两个有序数组算法示例)
- python怎么输出一个矩阵(python实现转圈打印矩阵)
- python操作redis(Python获取Redis所有Key以及内容的方法)
- python中tryexcept的用法(对python中的try、except、finally 执行顺序详解)
- python做学生成绩系统(python学生管理系统)
- python去除字符串中间的空格(Python去除字符串前后空格的几种方法)
- python弹跳小球(python实现弹跳小球)
- python处理各种xml文件(Python使用sax模块解析XML文件示例)
- python time模块是什么(python中时间模块的基本使用教程)
- python编写的小程序(几个适合python初学者的简单小程序,看完受益匪浅!推荐)
- python详细讲解类方法的使用(浅谈python标准库--functools.partial)
- python3和python2 兼容(Python2和Python3的共存和切换使用)
- python多线程多种方法(详解python多线程之间的同步一)
- python模块光照强度(我如何用 CircuitPython 和开源工具监控温室)
- python中递归方法(Python中最大递归深度值的探讨)
- python关闭程序强制退出线程(python多线程调用exit无法退出的解决方法)
- 黄渤泪目 我的痴呆父亲,我内心永远的痛(黄渤泪目我的痴呆父亲)
- 蒜苔和鱿鱼尾巴一起炒,味道特别棒,又脆又嫩,有滋又有味(蒜苔和鱿鱼尾巴一起炒)
- 鱿鱼炒蒜苔不是黑暗料理,这样做清香扑鼻,鲜美脆嫩,开胃又下饭(鱿鱼炒蒜苔不是黑暗料理)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
热门推荐
- HTTP消息中header头部信息的讲解
- python中for循环计算1-100(python 用for循环实现1~n求和的实例)
- jmeter接口性能测试教程(Xmeter API接口测试工具使用方法解析)
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
- MVC Model验证
- mysql自增锁(深入剖析 MySQL 自增锁)
- 怎样查看mysql的ddl窗口(详解MySQL8.0原子DDL语法)
- mysql的连接池名称如何查看(如何使用mysqladmin获取一个mysql实例当前的TPS和QPS)
- elementui自定义坐标(element-ui 上传图片后标注坐标点)
- mysql的日志怎么清除(MySQL删除了记录不生效的原因排查)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9