在这篇文章中我们讨论如何在Python中使用multiprocessing模块。
Queue进行流程安全的数据/任务处理。Pool管理多个工作进程你可以使用multiprocessing.Process()来创建一个进程。它有两个重要的参数:
target: 一个可调用对象(函数),这个进程将在进程启动时被调用。args: 函数参数。元组。实例:
from multiprocessing import Process
import os
def square_numbers():
for i in range(1000):
result = i * i
if __name__ == "__main__":
processes = []
num_processes = os.cpu_count()
print(num_processes) # 计算机中的CPU数量
# 构造多个进程
for _ in range(num_processes):
process = Process(target=square_numbers)
processes.append(process)
# 执行进程、等待进程结束
for process in processes:
process.start()
process.join()
既然进程不在同一个内存空间,那么它们就没有访问同一个(公开)数据的权限。
因此,它们需要特殊的共享内存对象来共享数据。
数据可以通过Value或Array来存储在共享内存中:
Value(type, value): 创建一个ctypes对象的类型是type。访问值使用.target。Array(type, value): 创建一个ctypes数组,其元素的类型是type。访问值使用[]。任务:创建两个进程,每个进程都应该访问共享变量,并修改它(在这种情况下,只增加它重复100次)。
创建两个进程,每个进程都应该访问共享变量,并修改它(在这种情况下,只增加它重复100次)。
from multiprocessing import Process, Value, Array
import time
# 增加100次
def add_100(number):
for _ in range(100):
time.sleep(0.01)
number.value += 1
# number中每个位置增加100次
def add_100_array(numbers):
for _ in range(100):
time.sleep(0.01)
for i in range(len(numbers)):
numbers[i] += 1
if __name__ == "__main__"