协程在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的log函数(Python3 log10函数简单用法)
- python实现linux服务(Python实现Linux监控的方法)
- python爬虫第一本书(我用Python抓取了7000 多本电子书案例详解)
- python比go语言简单(Python和Go语言的区别总结)
- python list基本操作(Python3中列表list合并的四种方法)
- python3配置教程(python3中property使用方法详解)
- python中生成字符串序列(python实现字符串加密 生成唯一固定长度字符串)
- python装饰器初学者教程(Python3.5装饰器原理及应用实例详解)
- python中startswith使用教程(Python os.access用法实例)
- 未来10年python前景(Python应用领域和就业形势分析总结)
- python教程第126节(Python 学习教程之networkx)
- python中查看数据类型的内置函数(python学习——内置函数、数据结构、标准库的技巧推荐)
- python模块光照强度(我如何用 CircuitPython 和开源工具监控温室)
- python实现网络爬虫的步骤(Python实现的爬取小说爬虫功能示例)
- python入门练习网页(详解python项目实战:模拟登陆CSDN)
- python如何编写判断正负数程序(Python实现判断一个整数是否为回文数算法示例)
- 越南新娘(越南新娘骗婚套路流程)
- 菲律宾游学(菲律宾游学中介机构)
- 菲律宾美食(菲律宾美食排行榜前十名)
- 菲律宾特产(菲律宾特产最值得买回国)
- 越南特产(越南特产首饰)
- TVB负评王连续挑战警察角色《使徒行者3》中将饰演卧底(TVB负评王连续挑战警察角色使徒行者3中将饰演卧底)
热门推荐
- apache服务器的安全配置(Apache常用虚拟主机配置方法解析)
- sql统计天数怎么算(SQL对数据进行按月统计或对数据进行按星期统计的实例代码)
- dedecms模板如何修改日期(DEDECMS网站文章列表页更新点击次数的问题完美解决)
- css怎么让div整体居中(CSS实现DIV居中的三种方法)
- 解决docker的tls(ssl)证书过期问题(解决docker的tlsssl证书过期问题)
- dedecms如何使用标签(DEDECMS首页调用最新评论和评论链接地址静态化实现代码)
- 宝塔linux面板部署防火墙后网页打不开报http564错误的解决办法(宝塔linux面板部署防火墙后网页打不开报http564错误的解决办法)
- css代码使用方法(写出牛逼的CSS代码13条建议你会哪几条)
- dropdownlist绑定枚举值
- react hooks详解(React Hooks使用常见的坑)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9