gpt4 book ai didi

Python - 多处理和共享内存

转载 作者:行者123 更新时间:2023-12-01 04:53:22 24 4
gpt4 key购买 nike

我正在使用 Deap 框架实现遗传算法。该算法有效,但我注意到 GA 的多进程版本非常消耗内存 9 GB,而单进程则消耗 2 GB,我怀疑是因为它已经为每个进程分配了内存。事实上,一旦执行映射,所使用的内存就会增加。由于进程之间共享的数据仅用于读取,因此所有进程都可以访问相同的内存。

这是我的代码的结构。

def evaluate(individual, dataset=None):

penalty = dataset.compute(individual)

return penalty


def initialize():
dataset = dataset(file1, file2)

pool = multiprocessing.Pool()
toolbox.register("map", pool.map)

toolbox.register("evaluate", evaluate, dataset=dataset)

return toolbox, dataset


def main():
toolbox, dataset = initialize()

dataset.data = some_training_set

fitnesses = toolbox.map(toolbox.evaluate, population)

dataset.data = some_validation_set

fitnesses = toolbox.map(toolbox.evaluate, population)

然后我有一个包含数据集(使用 pandas 读取)和字典的类。

class Dataset:

def __init__(self, file1, file2):
self.data = read(file1)
self.dict = loadpickle(file2)

def compute(self, individual):
for row in self.data
# some stuff reading row and self.dict

共享内存的最简单方法是什么?我尝试对 self.data 和 self.dict 使用全局变量,但什么也没有......

最佳答案

多处理模块使用多进程模型而不是线程模型,因此每个进程不能共享内存(不使用共享内存IPC调用)。如果需要共享内存,Deap 框架需要在底层重新设计才能使用线程。

关于Python - 多处理和共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com