完成本章学习后,你将能够:
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()
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)) # 共享整数数组
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])
1. 实现多进程并行计算 2. 实现进程池下载器 3. 比较进程vs线程性能
下一章:第三十章:异步编程