有人可以向我解释python-twisted像我五岁吗?

时间:2012-03-08 11:06:35

标签: python multithreading asynchronous twisted

我已经阅读了文档。我玩过一些例子。但是我仍然无法掌握什么是异步意味着它什么时候有用呢?魔术很多人在哪里看起来如此疯狂?

如果只是为了避免等待I / O为什么简单地在线程中运行? Deferred为什么需要?

我认为我缺少一些关于计算的基础知识,所以那些问题。如果是这样的话是什么?

1 个答案:

答案 0 :(得分:4)

就像你是五个......好吧:线程不好,异步好!

现在,认真地说:线程会产生开销 - 包括锁定和切换解码器,以及内存消耗和代码复杂性。当你的程序是IO绑定的,并且很多等待其他服务(API,数据库)返回响应时,你基本上等待空闲,并浪费资源。

异步IO的目的是在保持并发性的同时减轻线程开销,保持程序简单,避免死锁并降低复杂性。

例如关于聊天服务器。您在服务器上有数千个连接,并且您希望某些人根据他们所在的房间收到一些消息。使用线程执行此操作将比执行此异步方式复杂得多。

re deferred - 它只是一种简化代码的方式,而不是让每个函数都回调一个回调函数,等待它正在等待的操作。

另一个注意事项 - 如果你想要一个更加简单和优雅的异步IO框架,请尝试龙卷风,它基本上是异步Web服务器,具有异步http客户端和延迟替换。它编写得非常好,可以用作通用的异步IO框架。

请参阅http://tornadoweb.org