python-asyncio相关内容

Asyncio如何使用Run_Forever?

我想做的事: 创建一个自旋的异步事件循环 该循环被传递到我的系统中的各种类,用于在 上调度协程 该循环还用于处理对事件的响应(例如,我有一个队列,一些事件处理代码将在该队列上放置一个项,以及等待该队列上的get()来处理这些值的单独的协同例程) 有一个“拥有”循环的主线程,负责创建循环,在系统关机时将取消循环上正在运行的所有任务,并关闭&;停止循环(干净关机) 我的理解是, ..
发布时间:2022-03-25 14:32:20 Python

等待任何未来的异步

我正在尝试使用Asyncio来处理并发网络I/O。要在单个点调度非常多的功能,每个功能完成的时间差别很大。然后,将在每个输出的单独进程中处理接收到的数据。 处理数据的顺序无关紧要,因此考虑到输出可能会有很长的等待期,我希望await无论将来先完成什么,而不是按预定义的顺序。 def fetch(x): sleep() async def main(): futures ..
发布时间:2022-03-25 14:27:03 Python

来自python的asyncio是否支持用于UDP网络的基于协程的API?

今天晚上我浏览了pythonasyncio模块文档,为我的一个课程项目寻找一些想法,但我很快发现Python的标准aysncio模块可能缺少功能。 如果您仔细阅读文档,您会发现有一个基于回调的API和一个基于协程的API。回调API可以同时用于构建UDP和TCP应用程序,而协程API看起来只能用于构建TCP应用程序,因为它使用了流样式API。 这给我带来了相当大的问题,因为我正在寻找用 ..
发布时间:2022-03-25 14:25:03 Python

是否可以限制异步中并发运行的协同例程的数量?

我已经使用Asyncio编写了我的脚本,但是发现同时运行的协程太多,并且它经常会挂起。 所以我要同时限制协同例程的数量,一旦达到该限制,我希望等待任何协同例程完成,然后再执行另一个协同例程。 我当前的代码如下所示: loop = asyncio.get_event_loop() p = map(my_func, players) result = loop.run_until_c ..
发布时间:2022-03-25 14:20:56 Python

在异步(和观察者模式)中链接协程

我很难理解协程是如何链接在一起的。在一个比hello world或factorials稍微简单一点的示例中,我希望有一个循环,它持续监视文件修改时间,然后在每次接触文件时打印出时间: #!/usr/bin/env python3 import os import asyncio @asyncio.coroutine def pathmonitor(path): modtime = ..
发布时间:2022-03-25 14:07:25 Python

使用Python Asyncio运行并等待来自同步函数的异步函数

在我的代码中,我有一个带有属性的类,偶尔需要运行异步代码。有时我需要从异步函数访问属性,有时需要从同步函数访问属性-这就是为什么我不希望我的属性是异步的。此外,我有一种印象,异步属性通常是一种代码气味。如果我错了,请纠正我。 我在从Synchronous属性执行异步方法并在异步方法完成之前阻止进一步执行时遇到了问题。 以下是示例代码: import asyncio async ..
发布时间:2022-03-25 14:02:57 其他开发

使用Asyncio进行多次调用并将结果添加到字典

我在围绕Python3的Asyncio库时遇到了麻烦。我有一个邮政编码列表,我正在尝试对API进行异步调用,以获得每个邮政编码对应的城市和州。我可以使用for循环按顺序成功完成此操作,但我希望在邮政编码列表较大的情况下使其更快。 这是我的原件工作正常的示例 import urllib.request, json zips = ['90210', '60647'] def get_c ..
发布时间:2022-03-25 13:55:13 Python

同步调用协程

想象一下以下非常常见的情况:您已经编写了一个又长又复杂的函数,并且意识到一些代码应该提取到单独的函数中以便重用和/或可读性。通常,此额外的函数调用不会更改程序的语义。 但是,现在假设您的函数是一个协程,并且您要提取的代码包含至少一个异步调用。现在,将其提取到单独的函数中会突然更改您的程序语义,方法是插入一个新的点,在该点上协同例程产生,事件循环进行控制,并且可以在两者之间调度任何其他协同例程。 ..
发布时间:2022-03-25 13:54:05 其他开发

如何缓存异步协同程序

我使用aiohttp在python3.4中发出一个简单的HTTP请求,如下所示: response = yield from aiohttp.get(url) 应用程序一遍又一遍地请求相同的URL,所以我自然想缓存它。我的第一次尝试是这样的: @functools.lru_cache(maxsize=128) def cached_request(url): return ..
发布时间:2022-03-25 13:49:36 其他开发

在Python中连接多个异步生成器

我希望侦听同一对象的多个实例中的事件,然后将此事件流合并为一个流。例如,如果我使用异步生成器: class PeriodicYielder: def __init__(self, period: int) -> None: self.period = period async def updates(self): while True ..
发布时间:2022-03-25 13:45:57 Python

关闭异步任务的正确方法

我正在编写一个工具,该工具连接到X个UNIX套接字,发送命令并将输出保存在本地文件系统中。它每X秒运行一次。为了在工具接收到终止信号时执行一些清理,我将函数(SHUTDOWN)注册到Signal.SIGHUP和Signal.SIGTERM信号。此函数取消所有任务,然后关闭事件循环。 我的问题是我得到了 运行错误:事件循环在将来完成之前停止 当我发送信号.SIGTERM(终止‘pi ..
发布时间:2022-03-25 13:37:35 Python

异步任务VS协程

阅读asyncio documentation时,我意识到我不了解一个非常基本和基本的方面:直接等待协同例程和等待包装在任务中的相同协同例程之间的区别。 在文档示例中,对say_after协程的两个调用在没有create_task等待时顺序运行,在create_task中包装时并发运行。所以我明白这基本上就是不同之处,这是一个相当重要的区别。 然而,让我困惑的是,在我到处阅读的示例代码中(例如 ..
发布时间:2022-03-25 13:27:30 其他开发