marota / Oracle4Grid

Documentation at https://oracle4grid.readthedocs.io/en/latest/
Mozilla Public License 2.0
3 stars 1 forks source link

Problem with multi-process on MacOS with python 3.8 #30

Open marota opened 3 years ago

marota commented 3 years ago

As seen on new release of grid2op, there are changes in multiprocess library on MacOs for python 3.8. This piece of code https://github.com/marota/Oracle4Grid/blob/87eebf1980fffee65ef12663b6996d4cf816812e/oracle4grid/core/reward_computation/run_many.py#L53 leads to errors currently when doing multi-processing

AttributeError: Can't get attribute 'TopologyAndDispatchAction_rte_case14_realistic' on <module 'grid2op.Space.GridObjects' from '/Users/antoinemarot/dev/Oracle4Grid/venv_oracle/lib/python3.8/site-packages/grid2op/Space/GridObjects.py'> Process SpawnPoolWorker-6: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/multiprocessing/pool.py", line 114, in worker task = get() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/multiprocessing/queues.py", line 358, in get return _ForkingPickler.loads(res) AttributeError: Can't get attribute 'TopologyAndDispatchAction_rte_case14_realistic' on <module 'grid2op.Space.GridObjects' from '/Users/antoinemarot/dev/Oracle4Grid/venv_oracle/lib/python3.8/site-packages/grid2op/Space/GridObjects.py'>

marota commented 3 years ago

Commentaire de Benjamin: "1) le multi processing marche maintenant "normalement" (cf. point 2 pour des limitations) sur linux, macos et windows. Le runner est parfaitement capable de tourner en multi proc sur toutes les plateformes "en temps normal" 2) LIMITATION: si ne veux pas sauvegarder les données, puis les relire (donc que tu utilises la feature que Mario a développée pour passer les résutlats d'un run directement, sans les écrire / lire), cela ne marchera que sur Linux (comprendre: si une telle option est activée, alors le Runner, sous windows et macos, ne va plus faire les choses "en parrallele" mais de maniere sequentielle)"

mjothy commented 3 years ago

Dans l'oracle, nous utilisons des fields avancés de grid2op.EpisodeData (les **_space ....). La parralelisation sous MacOS & sous Windows sont basés sur un méchanisme qui n'est pas compatible avec ces fields.. Donc le multiprocessing dans l'oracle ne peut pas fonctionner tant qu'on ne change pas les endroits problématiques de EpisodeData.