私は python を初めて使用し、遺伝的アルゴリズム (GA) を使用してある種の曲線近似を行い始めました。その GA には、マルチプロセッシングを使用することで計算時間を大幅に短縮できる(素晴らしい) pyevolve ライブラリ ( http://pyevolve.sourceforge.net/ ) を使用しています。
ここで問題が発生します。近似したい曲線は、Excel ファイルから読み取られ、プログラムの最初にグローバル変数として格納される配列です。python マルチプロセッシング モジュールを使用すると、すべてのプロセスが独自のグローバル変数を使用して独自の python インスタンスを作成します。これにより、アルゴリズムのすべての世代 (すべてのプロセスを意味します) のすべての個人が、Excel ファイルを何度も開いて読み取るようになります。大きな Excel ファイルを開くと膨大な時間がかかる可能性があるため、そのファイルを 1 回開くだけで、すべてのプロセス/個人が読み取り配列を利用できるようにするとよいでしょう。
マルチプロセッシングはpyevolveライブラリで開始されますが、更新を簡単にするために変更したくありません。残念ながら、これは、変数をプロセスプールに渡すだけであることを意味します。
p = Process(target=my_func,args=(my_array))
私にとってはオプションではありません。これは私がこれまでに見つけた唯一の解決策です。
すべてのプロセスから my_array にアクセスできるようにする別の方法を知っている人はいますか?