亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
python - 無法理解tornado的異步
高洛峰
高洛峰 2017-04-17 17:35:07
[Python討論組]

看了一些tornado異步的實(shí)現(xiàn),我發(fā)現(xiàn),人們在使用異步非阻塞特性的時(shí)候都是使用的線程的能提供異步的package,比如tornado.httpclient.HTTPClient(),但是我要怎樣才能將自己的一個(gè)耗時(shí)函數(shù)(比如下面的sleep)變成異步非阻塞呢,代碼如下

class MainHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    @tornado.gen.coroutine
    def get(self):
        tornado.ioloop.IOLoop.instance().add_callback(self.sleep)
        self.finish('OK')
        
    def sleep(self):
        for i in range(100000000):
            if i % 100000 == 0:
                print(i)
        print('ooo')

當(dāng)用該handler處理請求時(shí),能立即返回'OK'表示異步能實(shí)現(xiàn),但是在處理sleep的時(shí)候卻不能處理其他的請求,其他請求會被阻塞知道之前這個(gè)請求處理完畢。請問各位大牛有什么方法將自己寫的耗時(shí)函數(shù)變成異步非阻塞呢(不使用線程池,既然異步是tornado的特性,應(yīng)該是有方法的撒)?

這和tornado的單線程循環(huán)有關(guān)嗎?

理解錯(cuò)了異步、阻塞和并發(fā),tornado確實(shí)能做到異步和非阻塞,但是單線程怎樣做到并發(fā)呢,當(dāng)?shù)谝粋€(gè)請求過來tornado返回過后,后臺還在處理耗時(shí)任務(wù),此時(shí)如果有其他請求過來,其他請求會處于一直等待的狀態(tài),這不是表明無法并行嗎?

高洛峰
高洛峰

擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...

全部回復(fù)(2)
ringa_lee

http://www.tornadoweb.org/en/stable/gen....

自己的耗時(shí)操作可以用tornado.gen.Task來實(shí)現(xiàn)異步,你的函數(shù)會收到一個(gè)callback參數(shù),當(dāng)任務(wù)完成時(shí),調(diào)用callback。

PHP中文網(wǎng)

異步就是在做某事之前做另外一件事。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號