在Python多进程编程中,处理异常需要使用multiprocessing
模块中的Pool
类。当子进程发生异常时,可以通过捕获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__": # 创建一个包含5个子进程的进程池 with multiprocessing.Pool(processes=5) as pool: # 将worker_func应用于进程池中的每个子进程 pool.map(worker_func, range(1, 6))
在这个示例中,我们定义了一个名为worker_func
的函数,该函数模拟了一个可能引发异常的工作任务。我们使用try-except
语句捕获异常,并在发生异常时打印错误消息。
在主程序中,我们创建了一个包含5个子进程的进程池,并使用pool.map()
方法将worker_func
应用于进程池中的每个子进程。当子进程发生异常时,异常被捕获并打印错误消息,而不会影响其他子进程的执行。