首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个python进程的Asyncio事件循环(aioprocessing,多个事件循环)

每个python进程的Asyncio事件循环(aioprocessing,多个事件循环)
EN

Stack Overflow用户
提问于 2015-04-17 15:36:40
回答 1查看 5.4K关注 0票数 12

我有两个过程:一个主进程和一个子进程。主进程正在运行一个asyncio事件循环,并启动子进程。我想在子进程中启动另一个异步事件循环。我使用aioprocessing模块启动子进程。

子流程功能是:

代码语言:javascript
复制
def subprocess_code():
     loop = asyncio.get_event_loop()
     @asyncio.coroutine
     def f():
        for i in range(10):
            print(i)
            yield from asyncio.sleep(1)
     loop.run_until_complete(f())

但我发现了一个错误:

代码语言:javascript
复制
    loop.run_until_complete(f())
  File "/usr/lib/python3.4/asyncio/base_events.py", line 271, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.4/asyncio/base_events.py", line 239, in run_forever
    raise RuntimeError('Event loop is running.')
RuntimeError: Event loop is running.

是否可以在子进程中启动一个新的或重新启动现有的asyncio事件循环?如果是这样的话,是怎么做的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-17 17:19:31

抱歉打扰了!我找到了解决办法!

代码语言:javascript
复制
policy = asyncio.get_event_loop_policy()
policy.set_event_loop(policy.new_event_loop())
loop = asyncio.get_event_loop()

将此代码放入从带有异步事件循环的进程启动的子进程内部,以启动新的asycnio事件循环。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29703620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档