首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >学习/理解Python异步的资源

学习/理解Python异步的资源
EN

Stack Overflow用户
提问于 2015-01-02 20:57:57
回答 1查看 3.6K关注 0票数 19

TLDR:我正在寻找一个全面的或权威的解释(教程/书籍/演示/...)面向应用程序开发人员的asyncio。

虽然我对事件循环和未来/延迟/承诺有了很好的理解(这在很大程度上要归功于JavaScript),但不知何故,Python异步的错综复杂仍然让我感到困惑。asyncio似乎比我所习惯的要复杂得多--大概是因为它在一定程度上是为与现有实现(Twisted,Tornado等)的低级兼容性而设计的。因为它允许在单独的线程中有多个事件循环。

据我所知,没有全面的基本概念演练,所以我在网上咨询了official docs以及各种articlespresentations

然而,我仍然不确定我的理解,很可能是因为在应用程序级别并不总是清楚什么是相关的,或者您是否不需要担心前面提到的替代方案。(许多资源似乎都假设熟悉Twisted等人。)

下面是给我带来不确定性的几个例子:

  • 到目前为止,我只将asyncio.coroutineyield from结合使用,但this comparison建议我应该重新考虑。
  • 服务器可以使用loop.create_server(MyProtocol)asyncio.start_server(my_connection_handler)创建-何时使用?H212
  • 在管理循环的生命周期中,适当的卫生措施是什么(例如,在

之后D14还没有理解为什么除了Futures.

  • What之外还需要D18),如果我希望类构造函数是非阻塞的(即使用D22,哪个invalid)?
  • Can类的getter似乎是异步的(例如,结合asyncio.coroutine)?
  • How和@property,我是否知道是否有任何给定的函数是异步的?例如,我希望StreamWriter.write是否是非阻塞的,但我不知道是否真的是这样。

我并不是想要这些特定问题的答案,它们只是说明了我在概念层面上的挣扎。

EN

回答 1

Stack Overflow用户

发布于 2015-01-04 01:04:35

我和你一样,在寻找答案,但我可以帮你做一件事:

关于非阻塞问题:

我创建了一个使用异步循环来监听twitter订阅的程序,

我在这里找到了答案:asyncio yield from concurrent.futures.Future of an Executor

基本上,使用executor,您可以使任何任务成为非阻塞的。只是一个警告,我的任务是独立的,不需要同步,我只需要它们成为非阻塞的。如果你需要它们为她等待,你必须使用信号量

下面是我是如何做到的:

代码语言:javascript
复制
@asyncio.coroutine
def boucle_deux():
#faire attendre la boucle si pas bcp de mots
    while True:
        print("debut du deux")
        value = t.next()
        future2 = loop.run_in_executor(None, mention, "LQNyL2xvt9OQMvje7jryaHkN8",
                                       "IRJX6S17K44t8oiVGCjrj6XCVKqGSX9ClfpGpfC467rajqePGb",
                                       "2693346740-km3Ufby8r9BbYpyzcqwiHhss22h4YkmnPN4LnLM",
                                       "53R8GAAncFJ1aHA1yJe1OICfjqUbqwcMR38wSqvbzsQMB", 23, value)
        response2 = yield from future2
        yield from asyncio.sleep(5)
        print("fin du deux")

asyncio.Task(boucle_deux())

以下是我找到的一些链接,它们帮助我更好地理解:

http://www.drdobbs.com/open-source/the-new-asyncio-in-python-34-servers-pro/240168408

http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html

http://www.drdobbs.com/open-source/the-new-asyncio-module-in-python-34-even/240168401

http://ntoll.org/article/asyncio

当然,这不是一本书,但它是一个很好的起点。

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

https://stackoverflow.com/questions/27742638

复制
相关文章

相似问题

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