杭州经济技术开发区建设局网站建设网站前需考虑哪些问题
2026/2/21 19:38:50 网站建设 项目流程
杭州经济技术开发区建设局网站,建设网站前需考虑哪些问题,网站关键词可以做几个,免费商业网站模板想要系统掌握 Python 多进程模块multiprocessing.Pool中apply_async、map_async、imap这三个核心方法的使用语法、核心差异、适用场景和实战示例#xff0c;从而根据实际需求选择合适的多进程并发方式#xff0c;提升程序执行效率。前置基础在讲解这三个方法前#xff0c;先…想要系统掌握 Python 多进程模块multiprocessing.Pool中apply_async、map_async、imap这三个核心方法的使用语法、核心差异、适用场景和实战示例从而根据实际需求选择合适的多进程并发方式提升程序执行效率。前置基础在讲解这三个方法前先明确核心前提multiprocessing.Pool进程池用于管理一组子进程避免频繁创建 / 销毁进程的开销「同步」方法如apply、map会阻塞主进程直到子进程执行完成「异步」方法如apply_async、map_async不会阻塞可继续执行主进程代码Windows 系统中多进程代码必须放在if __name__ __main__:块中避免递归创建子进程Linux/macOS 无强制要求但建议统一写法进程间数据隔离子进程无法修改主进程的变量结果需通过返回值获取。一、apply_async异步执行单个任务1. 核心作用异步提交单个任务到进程池主进程不阻塞可继续执行其他逻辑支持传参、回调函数任务完成后自动调用。2. 语法pythonpool.apply_async(func, args(), kwds{}, callbackNone, error_callbackNone)参数说明func子进程要执行的函数args传给func的位置参数元组kwds传给func的关键字参数字典callback可选任务成功执行后调用的回调函数参数为func的返回值error_callback可选任务执行出错时调用的回调函数参数为异常对象3. 实战示例pythonimport multiprocessing import time # 子进程执行的函数 def task(num): time.sleep(1) # 模拟耗时操作 return f任务{num}完成进程ID{multiprocessing.current_process().pid} # 回调函数任务成功后执行 def success_callback(result): print(f回调函数{result}) # 错误回调函数 def error_callback(e): print(f任务出错{str(e)}) if __name__ __main__: # 创建进程池指定4个工作进程 pool multiprocessing.Pool(processes4) # 异步提交单个任务 result_obj1 pool.apply_async(task, args(1,), callbacksuccess_callback) result_obj2 pool.apply_async(task, args(2,), callbacksuccess_callback) # 提交一个会出错的任务测试错误回调 result_obj3 pool.apply_async(task, args(错误参数,), error_callbackerror_callback) # 主进程继续执行不阻塞 print(主进程所有任务已提交等待子进程执行...) # 必须关闭进程池 等待所有子进程完成否则主进程退出子进程会被强制终止 pool.close() pool.join() # 也可通过result_obj.get()获取单个任务的返回值会阻塞直到任务完成 # print(result_obj1.get())输出顺序可能因进程调度略有不同plaintext主进程所有任务已提交等待子进程执行... 回调函数任务1完成进程ID12345 回调函数任务2完成进程ID12346 任务出错invalid literal for int() with base 10: 错误参数4. 适用场景需要逐个提交任务且每个任务参数 / 逻辑可能不同需为单个任务设置成功 / 失败回调任务数量少或任务提交时机不固定如动态生成任务。二、map_async异步批量执行可迭代任务1. 核心作用异步提交一组可迭代任务如列表、元组到进程池功能等价于map()的异步版本所有任务的参数来自可迭代对象结果按输入顺序返回支持回调函数。2. 语法pythonpool.map_async(func, iterable, chunksizeNone, callbackNone, error_callbackNone)参数说明func子进程要执行的函数仅接收单个参数由iterable的元素传入iterable可迭代对象如列表每个元素作为func的参数chunksize可选分块大小大数据集时设置可提升效率默认自动分块3. 实战示例pythonimport multiprocessing import time def task(num): time.sleep(1) return f任务{num}完成进程ID{multiprocessing.current_process().pid} def batch_callback(results): # 回调函数的参数是所有任务的结果列表按输入顺序 print(批量回调所有任务完成结果如下) for res in results: print(res) if __name__ __main__: pool multiprocessing.Pool(processes4) # 异步批量提交任务iterable为列表[1,2,3,4] result_obj pool.map_async(task, [1,2,3,4], callbackbatch_callback) print(主进程批量任务已提交等待执行...) pool.close() pool.join() # 也可通过result_obj.get()获取结果列表按输入顺序 # print(result_obj.get())输出plaintext主进程批量任务已提交等待执行... 批量回调所有任务完成结果如下 任务1完成进程ID12345 任务2完成进程ID12346 任务3完成进程ID12347 任务4完成进程ID123484. 适用场景批量执行相同逻辑的任务参数来自可迭代对象需异步执行且关注结果顺序任务数量适中可一次性加载到内存。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询