显示页面讨论过去修订反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== 第二十九章:多进程 ====== ===== 本章目标 ===== 完成本章学习后,你将能够: * 创建和管理进程 * 进程间通信 * 使用进程池 * 理解进程vs线程 ===== 创建进程 ===== <code python> import multiprocessing import time def worker(name): print(f"Process {name} started") time.sleep(2) print(f"Process {name} finished") if __name__ == '__main__': # 创建进程 p1 = multiprocessing.Process(target=worker, args=("P1",)) p2 = multiprocessing.Process(target=worker, args=("P2",)) p1.start() p2.start() p1.join() p2.join() </code> ===== 进程间通信 ===== <code python> import multiprocessing # Queue queue = multiprocessing.Queue() def producer(queue): for i in range(5): queue.put(i) def consumer(queue): while True: item = queue.get() if item is None: break print(f"Got {item}") # Pipe parent_conn, child_conn = multiprocessing.Pipe() parent_conn.send('hello') print(child_conn.recv()) # Shared memory from multiprocessing import Value, Array num = Value('d', 0.0) # 共享双精度浮点数 arr = Array('i', range(10)) # 共享整数数组 </code> ===== 进程池 ====== <code python> from multiprocessing import Pool import os def square(n): return n * n if __name__ == '__main__': with Pool(processes=4) as pool: # map results = pool.map(square, range(10)) # apply_async result = pool.apply_async(square, (5,)) print(result.get()) # 多个任务 multiple_results = [pool.apply_async(square, (i,)) for i in range(10)] print([r.get() for r in multiple_results]) </code> ===== 本章练习 ===== 1. 实现多进程并行计算 2. 实现进程池下载器 3. 比较进程vs线程性能 下一章:[[python_course:chapter30|第三十章:异步编程]] 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 python/chapter29.txt 最后更改: 2026/04/09 14:38由 张叶安 登录