gpt4 book ai didi

python asyncio run_forever 或 while True

转载 作者:行者123 更新时间:2023-12-04 23:42:49 33 4
gpt4 key购买 nike

我应该更换 while True在我的代码中(没有 asyncio)或者我应该使用 asyncio 事件循环来完成相同的结果。

目前我在某种连接到 zeromq 的“ worker ”上工作,接收一些数据,然后对外部工具(服务器)执行一些请求(http)。一切都写在正常的阻塞 IO 中。使用 asyncio 事件循环摆脱 while True: ... 有意义吗? ?

将来它可能会在 asyncio 中完全重写,但现在我害怕从 asyncio 开始。

我是 asyncio 的新手,并不是这个库的所有部分对我来说都很清楚:)

谢谢 :)

最佳答案

如果你想用一个不支持它的库开始编写异步代码,你可以使用 BaseEventLoop.run_in_executor .

这允许您将可调用文件提交给 ThreadPoolExecutorProcessPoolExecutor并异步获取结果。默认执行器是 5 个线程的线程池。

例子:

# Python 3.4
@asyncio.coroutine
def some_coroutine(*some_args, loop=None):
while True:
[...]
result = yield from loop.run_in_executor(
None, # Use the default executor
some_blocking_io_call,
*some_args)
[...]

# Python 3.5
async def some_coroutine(*some_args, loop=None):
while True:
[...]
result = await loop.run_in_executor(
None, # Use the default executor
some_blocking_io_call,
*some_args)
[...]

loop = asyncio.get_event_loop()
coro = some_coroutine(*some_arguments, loop=loop)
loop.run_until_complete(coro)

关于python asyncio run_forever 或 while True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761095/

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