python-asyncio相关内容

不会将部分异步函数检测为异步函数

我有一个函数,它同时接受常规函数和异步函数(不是协同例程,而是返回协同例程的函数)。 在内部,它使用asyncio.iscoroutinefunction()test查看它获得了哪种类型的函数。 最近,它在我尝试创建部分异步函数时出现故障。 在此演示中,ptest未被识别为Couroute函数,即使它返回协程,即ptest()是协程。 import asyncio impo ..
发布时间:2022-03-25 12:11:14 Python

事件循环中的共享队列

是否可以在一个事件循环中跨不同任务共享Asyncio.Queue? 用例: 两个任务在队列上发布数据,一个任务从队列中获取新项目。以异步方式执行所有任务。 main.py import asyncio import creator async def pull_message(queue): while True: # Here I dont g ..
发布时间:2022-03-25 12:10:01 Python

线程和异步:任务已销毁,但处于挂起状态

我有一个运行异步循环的线程。我开始了一项未来的任务,做一些与这里无关的事情。当我停止线程时,我也停止了异步循环。但是,我似乎无法取消池任务并获得Task was destroyed but it is pending! 这里有一个玩具示例: from contextlib import suppress from threading import Thread from time im ..
发布时间:2022-03-25 12:06:52 其他开发

使用autbahn.asyncio.wamp无阻塞地运行多个ApplicationSession

我正在尝试同时运行两个autobahn.asyncio.wamp.ApplicationSession中的。以前,我使用this post's answer中建议的Autobahn库修改来完成此操作。我现在 需要更专业的解决方案。 搜索了一段时间后,this post appeared quite promising,但使用twisted库,而不是asyncio。我无法为autobahn库的 ..
发布时间:2022-03-25 12:03:17 Python

检测空闲异步事件循环

是否有某种编程模式可以让我在以下意义上检测异步事件循环何时变得空闲?假设我的执行路径以某种复杂的方式分支,比如使用asyncio.ather(),但是我知道每个分支最终都会等待一些空闲的协程,比如套接字或子进程。假设我知道这些协同程序实际上从不屈服,所以事件循环将执行它能执行的任何python代码,但最终只会等待那些空闲的协同程序。是否有编程方法来检测此类状态并停止循环? 推荐答案 正 ..
发布时间:2022-03-25 11:59:00 其他开发

使用Asyncio实现非阻塞WebSocket接收

我正在开发一个Python-3程序,该程序尝试做两件事: (1)从外部WebSocket读取数据(类型1)(非阻塞)和 (2)在常规UDP套接字(非阻塞)上接收数据(类型2) 在很长一段时间内,WebSocket和UDP套接字上都没有数据。因此,我正在尝试使这两种数据类型的读取/接收都是非阻塞的。我正在尝试使用Asyncio和WebSockets对WebSocket执行此操作。 不幸的是,只要 ..
发布时间:2022-03-25 11:52:41 其他开发

异步任务的开销是多少?

任何异步任务在内存和速度方面的开销是多少?在不需要并发运行的情况下将任务数降至最低是否值得? 推荐答案 任何异步任务在内存和速度方面的开销是多少? TL;DR内存开销看起来可以忽略不计,但时间开销可能很大,特别是在等待的协程选择不挂起的情况下。 让我们假设您正在测量与直接等待的协程相比的任务开销,例如: await some_coro() ..
发布时间:2022-03-25 11:48:04 Python

PYTHON词典异步安全吗?

我已经在Python应用程序中创建了一个字典,我在其中保存数据,并且我有两个任务,这两个任务并行运行并从外部API获取数据。一旦获得数据,他们就会更新字典-每个字典中都有一个不同的键。 我想了解字典是否是异步安全的,或者在读取/更新字典时需要加锁吗? 每次任务还读取上次保存的值。 my_data = {} asyncio.create_task(call_func_one_cor ..
发布时间:2022-03-25 11:46:16 Python

如何集成Python Mido和Asyncio?

我有一台通过MIDI执行文件I/O的设备。我有一个使用Mido下载文件的脚本,但它是一堆全局变量。我想整理一下,以便正确使用Asyncio,但是我不确定如何集成Mido回调。我想文档说我应该使用Future对象,但我不确定Mido回调函数如何获得该对象。 推荐答案 mido提供了一个callback-based接口,该接口将从不同的线程调用回调。您的回调实现可以通过调用loop.cal ..
发布时间:2022-03-25 11:44:09 Python

如何监控Python事件循环的繁忙程度?

我有一个异步应用程序,它通过aiohttp服务请求并执行其他异步任务(作为HTTP客户端与数据库交互、处理消息、发出请求)。我想监视事件循环的繁忙程度,比如它执行代码所花费的时间与等待select完成相比所花费的时间。select。 有没有办法用标准库事件循环或其他第三方循环(Uvloop)来衡量这一点? 具体地说,我想要一个持续的饱和度百分比度量,而不仅仅是this question ..
发布时间:2022-03-25 11:34:59 Python

异步生成器不是迭代器吗?

在Python中,您可以编写一个可迭代的生成器,如下所示: def generate(count): for x in range(count): yield x # as an iterator you can apply the function next() to get the values. it = generate(10) r0 = next(it) ..
发布时间:2022-03-25 11:25:50 Python

使用python asyncio.create_server实例提示用户输入

我正在学习有关python3asyncio库的知识,我遇到了一个小问题。我正在尝试修改Python文档中的EchoServer示例,以提示用户输入,而不仅仅是回显客户端发送的内容。 我以为这和添加对input()的调用一样简单,但是input()当然会挡路,直到出现导致问题的用户输入。 理想情况下,即使服务器没有什么可“说”的时候,我也希望继续从客户端接收数据。有点像聊天客户端,每个连接都 ..
发布时间:2022-03-25 11:19:05 Python

将异步任务发送到在其他线程中运行的循环

如何异步插入任务以在另一个线程中运行的asyncio事件循环中运行? 我的动机是支持解释器中的交互式异步工作负载。我无法挡路主REPL帖子。 示例 我目前有缺陷的理解是,以下方法应该是可行的。为什么不是呢?实现上述目标的更好方法是什么? import asyncio from threading import Thread loop = asyncio.new_event ..
发布时间:2022-03-25 11:17:07 Python

“asyncio.sleep(Delay)”是否保证睡眠至少需要“delay”秒?

asyncio.sleep()的阻塞表亲time.sleep()无法保证它将休眠请求的时间。 实际挂起时间可能小于请求的时间,因为任何捕获的信号都将在执行该信号的捕获例程后终止SLEEP()。 asyncio.sleep()%sdocumentation没有提到类似的限制。 asyncio.sleep()是否能够对休眠时间做出更强有力的保证? 推荐答案 我不会说asy ..
发布时间:2022-03-25 11:06:47 Python

如何使用Asyncio计划和取消任务

我正在编写一个客户端-服务器应用程序。在连接时,客户端向服务器发送“心跳”信号,例如,每秒。 在服务器端,我需要一种可以添加要异步执行的任务(或协程或其他内容)的机制。此外,当客户端停止发送“心跳”信号时,我想取消来自客户端的任务。 换句话说,当服务器启动一项任务时,它会超时或ttl,例如3秒。当服务器接收到“心跳”信号时,它会重新设置计时器3秒,直到任务完成或客户端断开连接(停止发送信号) ..
发布时间:2022-03-25 11:05:10 Python