什么是装饰Python的扭曲反应器类
@reactor.callWhenRunning,
@results_deferred.addCallback
@results_deferred.addErrback.
还什么都推迟字符串,例如在
twisted.internet.utils.getProcessOutput()
返回一个字符串递延究竟这里发生的一切有什么意义?
我是新来的扭曲,因此这可能是一个很简单的问题,但阅读扭曲的文档没有帮助我很多
什么是装饰Python的扭曲反应器类
@reactor.callWhenRunning,
@results_deferred.addCallback
@results_deferred.addErrback.
还什么都推迟字符串,例如在
twisted.internet.utils.getProcessOutput()
返回一个字符串递延究竟这里发生的一切有什么意义?
我是新来的扭曲,因此这可能是一个很简单的问题,但阅读扭曲的文档没有帮助我很多
我不确定python,但这看起来像一个活动对象模式,和期货。期货将成为下一个C++版本的标准。如果通过活动对象及期货读,你会得到一个想法
在正常的编程习惯,你会怎么做
db = Database.connect()
result = db.getResult()
processResult(result)
现在根据您的数据库和网络,这3个语句可以在任何地方从毫秒拿几秒钟。
我们几十年来一直在用这种方式进行编程,而且大多数情况下我们都在等待。
但是有一段时间你的程序不能等待结果。你会开始思考,当我等待结果时,我可以做很多其他事情。也许打印一个输出,或处理一个功能,或者只是快速检查插座等。
输入扭曲和延期。
而不是在等待result
,在Twisted调用特殊方法时,您将得到Deferred
。你会为这个延迟添加一个回调函数,这意味着当你有结果/答案时调用这个函数。
deferredResult = db.nonBlockingGetResult()
deferredResult.addCallback(processOutput)
提供如执行的第一条语句很快,它返回“东西”回来了。那东西是Deferred
。那里没有阻塞,没有等待。并且对此Deferred
添加回调processOutput
,该回调在延迟被“解雇”时调用 - 即result
已准备就绪。
HTH
感谢的冲动使得它晶莹剔透 – anijhaw 2010-03-13 21:53:14
@anijhaw,请抵制如此使用作为一个论坛 – 2010-03-13 13:03:00