第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

學(xué)習(xí)tornado遇到一段代碼 大神們幫我解釋下

學(xué)習(xí)tornado遇到一段代碼 大神們幫我解釋下

import tornado.ioloopfrom tornado.httpclient import AsyncHTTPClientimport functoolsdef fetch():    response = yield functools.partial(AsyncHTTPClient().fetch, 'http://jinri.info')    print responsegen = fetch()f = gen.next()def callback(response):    try:        gen.send(response)    except StopIteration:        passf(callback)print 'here'tornado.ioloop.IOLoop.instance().start()為什么f(acllback)在print 'here'之后執(zhí)行tornado.ioloop.IOLoop.instance().start()這行代碼的作用什么?用debug看程序運行的流程,在執(zhí)行了tornado.ioloop.IOLoop.instance().start()之后,response才有結(jié)果,然后執(zhí)行callback()回調(diào),這個執(zhí)行順序也不是特別明白在學(xué)習(xí)異步調(diào)用 看這代碼卡主了.... 麻煩大家?guī)臀医獯鹣?
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊

這段code的執(zhí)行過程:

gen = fetch()    # 創(chuàng)建一個生成器函數(shù)

f = gen.next()   # 調(diào)用生成器函數(shù),返回 yield 后面的函數(shù),即經(jīng)過partial包裝的 AsyncHTTPClient。

                 # 可以理解返回AsyncHTTPClient函數(shù)。

f(callback)      # 執(zhí)行f函數(shù),也就是執(zhí)行 AsyncHTTPClient,

                 # AsyncHTTPClient函數(shù)包含一個系統(tǒng)異步IO調(diào)用。AsyncHTTPClient注冊了回調(diào)函數(shù),

                 # 當(dāng)異步IO完畢,調(diào)用回調(diào)callback。

print 'here'     # 打印 

                 # 注意 :callback是異步調(diào)用的回調(diào),因此無法確定是在print之前還是之后執(zhí)行。

                 # 通常而言,網(wǎng)絡(luò)IO會比計算慢,因此絕大多數(shù)情況下先執(zhí)行print,然后才調(diào)用callback,

                 # 注意是callback,不是f,f早就執(zhí)行了。

                 # 執(zhí)行callback的時候,通過生成器 gen.send(response),將結(jié)果返回給fetch的response。

                 # 也就是可以理解此時的 yield 等價于  response = return callback()

tornado.ioloop.IOLoop.instance().start() 是tornado開啟網(wǎng)絡(luò)listen的主循環(huán)


查看完整回答
反對 回復(fù) 2018-10-28
  • 2 回答
  • 0 關(guān)注
  • 1027 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號