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

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

我可以觸發(fā)并忘記提交到線程池的可調(diào)用對象嗎?

我可以觸發(fā)并忘記提交到線程池的可調(diào)用對象嗎?

慕田峪4524236 2023-08-15 16:49:10
在我的 Python 3 應(yīng)用程序中,我必須處理許多不應(yīng)阻塞主線程的小型(同時)I/O 任務(wù),因此我想利用線程池:from concurrent.futures import ThreadPoolExecutorclass MyApp:    def __init__(self):        self.app_thread_pool = ThreadPoolExecutor()    def submit_task(self, task):        self.app_thread_pool.submit(MyApp.task_runner, task)    @staticmethod    def task_runner(task):        # Do some stuff with the task, save to disk, etc.這工作正常,作業(yè)正在線程池的線程中提交和啟動,任務(wù)執(zhí)行它們應(yīng)該執(zhí)行的操作?,F(xiàn)在,閱讀該concurrent.futures模塊的文檔,似乎該模塊/線程池將與Future對象一起使用,以便處理提交任務(wù)的結(jié)果。然而,就我而言,我對這些結(jié)果不感興趣,我想解雇并忘記我的任務(wù),他們能夠處理自己。所以我的問題是:我是否必須使用 futures,或者我可以簡單地執(zhí)行submit()一個任務(wù),如上所示,并忽略Future從作業(yè)提交返回的任何對象?我問的是內(nèi)存和資源管理方面。請注意,我也不想使用該with語句來使用線程池,如文檔中所述,因為我在應(yīng)用程序的整個生命周期中都需要這個線程池,并且啟動線程池的主線程還有許多其他事情要做...
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

不,您當然不必使用返回的Future對象。正如您所發(fā)現(xiàn)的,您的代碼似乎可以在不這樣做的情況下正常工作。這只是可觀察性穩(wěn)健性的問題。

保留Futures 可以讓您跟蹤已提交的任務(wù)。您可以了解他們何時完成、檢索結(jié)果、取消任務(wù)等。這對于了解任務(wù)的進展情況非常重要。

但密切關(guān)注任務(wù)的一個可以說更重要的原因是為了穩(wěn)健性。如果其中一項任務(wù)失敗怎么辦?您可能想以某種方式重試。請注意,很少有任務(wù)不會失敗。你說你的任務(wù)是“I/O”,這是一個失敗很常見的典型例子,只有在你嘗試了一些東西之后才知道

因此,雖然沒有什么強迫您跟蹤未來,但您可能應(yīng)該這樣做,特別是如果您需要一個強大的、長期運行的應(yīng)用程序。


查看完整回答
反對 回復(fù) 2023-08-15
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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