说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
multiprocessing.Process 是 Python 中用于创建和管理子进程的类。每个进程拥有独立的内存空间和 Python 解释器实例,从而实现真正的并行执行,适合计算密集型任务。Process 类在底层会创建一个新的进程,并在新的进程中执行指定的函数。不同的进程拥有独立的内存空间,它们之间的数据不共享,需要通过特定的方式(如进程间通信机制)来交换数据。
构造方法:
Process(group=None, target=None, name=None, args=(), kwargs={})
参数:
常用方法:
start()
: 启动进程,调用 run() 方法。run()
: 如果 target 参数被设置,调用 target(*args, **kwargs)
。join(timeout=None)
: 等待进程结束,或最多等待 timeout 秒。is_alive()
: 判断进程是否还在运行。terminate()
: 立即终止进程。并行计算: 适用于需要并行执行的 CPU 密集型任务。
任务分解: 将多个独立任务分配给不同的进程。
代码如下:
from multiprocessing import Process
import os
def worker(num):
print(f'子进程 {num} 启动,PID: {os.getpid()}')
if __name__ == '__main__':
processes = []
for i in range(5):
p = Process(target=worker, args=(i,))
processes.append(p)
p.start()
for p in processes:
p.join()
生产者-消费者模型: 一个生产者进程生成数据,消费者进程消费数据,通过 Queue 进行通信。Queue 用于在进程间传递数据,确保线程安全。
from multiprocessing import Process, Queue
import time
def producer(queue):
for i in range(5):
item = f'item {i}'
print(f'生产者生成: {item}')
queue.put(item)
time.sleep(1)
def consumer(queue):
while True:
item = queue.get()
if item is None:
break
print(f'消费者消费: {item}')
time.sleep(2)
if __name__ == '__main__':
q = Queue()
p1 = Process(target=producer, args=(q,))
p2 = Process(target=consumer, args=(q,))
p1.start()
p2.start()
p1.join()
q.put(None) # 终止消费者进程
p2.join()
更新时间:2024-06-30 19:18:38 标签:python multiprocessing 进程 进程类