在Python多進程編程中,處理異常需要使用multiprocessing
模塊中的Pool
類。當子進程發(fā)生異常時,可以通過捕獲Exception
來處理。以下是一個簡單的示例:
import multiprocessing
import time
def worker_func(num):
try:
print(f"Worker: {num}")
time.sleep(1)
if num == 3:
raise ValueError("An error occurred in worker function.")
except Exception as e:
print(f"Exception occurred in worker function: {e}")
if __name__ == "__main__":
# 創(chuàng)建一個包含5個子進程的進程池
with multiprocessing.Pool(processes=5) as pool:
# 將worker_func應用于進程池中的每個子進程
pool.map(worker_func, range(1, 6))
在這個示例中,我們定義了一個名為worker_func
的函數(shù),該函數(shù)模擬了一個可能引發(fā)異常的工作任務。我們使用try-except
語句捕獲異常,并在發(fā)生異常時打印錯誤消息。
在主程序中,我們創(chuàng)建了一個包含5個子進程的進程池,并使用pool.map()
方法將worker_func
應用于進程池中的每個子進程。當子進程發(fā)生異常時,異常被捕獲并打印錯誤消息,而不會影響其他子進程的執(zhí)行。