python:chapter29

第二十九章:多进程

完成本章学习后,你将能够:

  • 创建和管理进程
  • 进程间通信
  • 使用进程池
  • 理解进程vs线程
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线程性能

下一章:第三十章:异步编程

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • python/chapter29.txt
  • 最后更改: 2026/04/09 14:38
  • 张叶安