PYTHON使每个进程都可以访问全局变量

Mar*_*rku 8 python global multiprocessing pyevolve

我是python的新手,并开始使用遗传算法(GA)进行某种曲线拟合.对于那个GA,我使用(真棒)pyevolve库(http://pyevolve.sourceforge.net/),它能够通过使用多处理极大地减少计算时间.

这就是我的问题出现的地方:我想要近似的曲线是一个从excel文件中读取并在程序开头存储为全局变量的数组.使用python多处理模块时,每个进程都使用自己的全局变量创建自己的python实例.这导致每一个人,在每一代算法(意味着每个过程)中一次又一次地打开和读取excel文件.打开大的excel文件会导致大量的时间,因此只需打开一次该文件并使读取数组可供每个进程/个人使用,这将是一件好事.

多处理是在pyevolve库中启动的,我不想更改它以便于更新.不幸的是,这意味着只需通过例如将变量传递给流程池

p = Process(target=my_func,args=(my_array))

对我来说不是一个选择.这是我到目前为止找到的唯一解决方案.

有没有人知道从每个进程访问my_array的另一种方法?

提前致谢!

Mar*_*rku 1

我只是想让你知道我是如何解决这个问题的(如果其他人也遇到这个问题):

我的解决方案不适用于一般的 python 相关问题,但在使用 pyevolve 时它会有所帮助,这对我来说已经足够了。我不知道的是,在 pyevolve 中,您可以通过以下方式向基因组或遗传算法实例添加参数

my_genome.setParams(xyz=my_array) 或者 my_ga.setParams(xyz=my_array)

这些参数可以通过以下方式访问

my_genome.getParam('xyz')my_ga.getParam('xyz')

每个进程都可以访问这些参数,因此我的问题得到了解决,并且我不需要考虑一般的 python 多处理问题。我希望这对其他人有帮助!