协程在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简易版学生管理系统(python3.6实现学生信息管理系统)
- python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)
- python电脑自动发送邮件(python学习--使用QQ邮箱发送邮件代码实例)
- 笨办法学python3目录(如何愉快地迁移到 Python 3)
- python把文件上传服务器(Python 实现两个服务器之间文件的上传方法)
- python删除list的指定元素(Python list列表中删除多个重复元素操作示例)
- python怎么抽取微信图片(Python 一键制作微信好友图片墙的方法)
- python包和模块管理(python的依赖管理的实现)
- python html文字分段(Python对HTML转义字符进行反转义的实现方法)
- python零基础实战项目(十个Python练手的实战项目,学会这些Python就基本没问题了推荐)
- 零基础学计算机二级python(计算机二级python学习教程1 教大家如何学习python)
- python直接查询mongodb(pymongo中聚合查询的使用方法)
- python中列表remove的用法汇总(对python_discover方法遍历所有执行的用例详解)
- python如何遍历一个列表(说说如何遍历Python列表的方法示例)
- python零基础入门详细教程(Python零基础入门学习之输入与输出)
- python自学编程笔记(Python 编程速成推荐)
- OPPO用户看过来 汇总几个春节实用技巧,轻松搞定多设备联动玩法(汇总几个春节实用技巧)
- 北京旅游攻略(北京旅游攻略5日游及其花费)
- 四川旅游攻略(四川旅游攻略自由行攻略)
- 上海迪士尼攻略(上海迪士尼攻略旅游)
- 哪里可以看熊猫(成都哪里可以看熊猫)
- oppo手机的三种录屏方法,你知道有哪些吗(oppo手机的三种录屏方法)
热门推荐
- shell监控docker各种状态(如何监控docker容器运行状态 shell 脚本)
- lombok 代码行数(Lombok实现方式JSR-269)
- arm堆栈解析程序(浅析ARM架构下的函数的调用过程)
- amaze ui使用教程(Amaze UI 文件选择域的示例代码)
- css怎么样让banner不动(CSS banner图响应式居中显示的方法)
- php项目开发实例(php项目中类的自动加载实例讲解)
- nodejsweb服务(Nodejs实现内网穿透服务)
- web前端项目的目录结构
- python3标准库资源(Python3标准库总结)
- sql server没有服务器怎么办(SQL Server 2012安装后服务器名称找不到的解决办法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9