python asyncio永远运行\u或在为True时运行
我应该在代码中替换python asyncio永远运行\u或在为True时运行,python,python-asyncio,Python,Python Asyncio,我应该在代码中替换而为True(没有asyncio),还是应该使用asyncio事件循环来实现相同的结果 目前,我使用连接到zeromq的某种“worker”,接收一些数据,然后对外部工具(服务器)执行一些请求(http)。所有内容都是用普通的阻塞IO编写的。使用asyncio事件循环来摆脱,而True:…有意义吗 将来它可能完全用asyncio重写,但现在我恐怕要从asyncio开始 我是asyncio新手,并不是所有库的部分都清楚:) Thx:)如果您想开始使用不支持异步IO代码的库编写异步
而为True
(没有asyncio),还是应该使用asyncio事件循环来实现相同的结果
目前,我使用连接到zeromq的某种“worker”,接收一些数据,然后对外部工具(服务器)执行一些请求(http)。所有内容都是用普通的阻塞IO编写的。使用asyncio事件循环来摆脱,而True:…
有意义吗
将来它可能完全用asyncio重写,但现在我恐怕要从asyncio开始
我是asyncio新手,并不是所有库的部分都清楚:)
Thx:)如果您想开始使用不支持异步IO代码的库编写异步IO代码,可以使用 这允许您将可调用的提交给或,并异步获取结果。默认执行器是由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)
如果要尝试使用
asyncio
,只需使用aiozmq
和其他asyncio
友好库完全重写程序即可。尝试将阻塞库与asyncio事件循环混合使用,特别是如果您只是为了删除而执行True:
循环,这通常不是一个好主意。您将如何更改代码以永远运行某些协同程序?您可以使用simplewhile True:
或其他可能的异步方式?@qwetty在协同程序中使用while True
是非常好的,只要您在内部执行异步调用。比如说,看看这个,谢谢。这就是我需要的。关于while的确认:)