什麼是裝飾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