gpt4 book ai didi

Python asyncio 读取文件并每隔一段时间执行另一个事件

转载 作者:行者123 更新时间:2023-12-05 01:02:09 29 4
gpt4 key购买 nike

我承认我很懒惰:我需要相当快地完成这项工作,无法理解 Python3 asyncio 模块。 (有趣的是,我发现提升一个相当直观。)

我需要读取一个会不时阻塞的文件对象(管道)。在此期间,我希望能够以设定的时间间隔(比如每 30 分钟)触发另一个事件,而不管是否可以从文件中读取任何内容。

任何人都可以帮助我使用 python3 asyncio 来完成这个任务吗? (无法安装twis​​ted等第三方模块。)

最佳答案

asyncio(以及其他异步库,如 twisted 和 tornado)不支持文件的非阻塞 IO -- 只有套接字和管道是异步处理的。

主要原因是:Unix系统没有好的处理文件的方法。比如,在 Linux 上,任何文件读取都是阻塞操作。

另见 https://groups.google.com/forum/#!topic/python-tulip/MvpkQeetWZA

UPD。

对于计划周期性事件,我想使用 asyncio.Task:

@asyncio.coroutine
def periodic(reader, delay):
data = yield from reader.read_exactly(100) # read 100 bytes
yield from asyncio.sleep(delay)

task = asyncio.Task(reader, 30*60)

片段假定 readerasyncio.StreamReader 实例。

关于Python asyncio 读取文件并每隔一段时间执行另一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916294/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com