是否有可能在這樣的可調(diào)用對象中捕獲從循環(huán)引發(fā)的異常concurrent.futures.Executor?--with concurrent.futures.ThreadPoolExecutor(max_workers=num_cores) as executor: futures = {executor.submit(self._process_ticket, i) for i in items} concurrent.futures.wait(futures)我試圖遍歷列表中的數(shù)千個對象以執(zhí)行任務(wù),并且只是設(shè)置多處理以更快地處理它們。這很有效,但是由于我正在處理的對象for,在處理過程中可能會從循環(huán)中引發(fā)異常,并且由于正在調(diào)用concurrent.futures.Executor它而使我無法像以前捕獲它那樣捕獲它。下面是一個簡單的示例,說明了我之前是如何通過序列化過程捕獲異常的。我必須創(chuàng)建一種解決方法,以強制迭代再次嘗試處理該對象,并從該步驟繼續(xù)進行,因為異常會導(dǎo)致循環(huán)停止:def task(self, items, step=None): # items = [list,of,many,objects] try: for i in range(0 if step is None else step, len(items)): with app.app_context(): ## do things with items[i].. except Exception as e: self.task(items, i)我基本上是想在循環(huán)被異常中斷的情況下強制再次處理對象,并從該步驟繼續(xù)執(zhí)行循環(huán)。
1 回答

茅侃侃
TA貢獻1842條經(jīng)驗 獲得超21個贊
沒關(guān)系,幾天前就想到了這一點。不知道這是否是完成此任務(wù)的最佳/推薦方法,但似乎可以完成此工作:
with concurrent.futures.ThreadPoolExecutor(max_workers=num_cores) as executor:
try:
for i in range(step, len(items)):
futures = {executor.submit(self.task, items[i])}
except:
self.task(items, i)
concurrent.futures.wait(futures)
仍然開放征求意見/建議
添加回答
舉報
0/150
提交
取消