So the current version apparently doesn't work in windows. Probably this problem caused by difference in how the OS implement forking technique which in turns affect the pickling of objects.
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\threading.py", line 932, in _bootstrap_inner
Traceback (most recent call last):
File "", line 1, in
self.run()
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\spawn.py", line 116, in spawn_main
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\threading.py", line 870, in run
exitcode = _main(fd, parent_sentinel)
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\spawn.py", line 126, in _main
self._target(*self._args, **self._kwargs)
File "C:\Users\admin\Desktop\Sim-Project\Epidemicon\lib\Renderer\Controller.py", line 114, in run_auto
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input
self.model.step(stepSize=self.view.steps_to_advance)
File "C:\Users\admin\Desktop\Sim-Project\Epidemicon\lib\Simulation\Simulator.py", line 230, in step
thread.start()
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\process.py", line 121, in start
self._popen = self._Popen(self)
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\context.py", line 327, in _Popen
return Popen(process_obj)
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\popen_spawn_win32.py", line 93, in init
reduction.dump(process_obj, to_child)
File "C:\Users\admin\anaconda3\envs\epidemicon\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
RecursionError: maximum recursion depth exceeded while pickling an object
My idea to fix is to implement pickle "getstate" method in some classes so that the threading still works and doesn't screws up the whole project. But this is a major fix, so it'll take times to develop the fix for this issue.
@jair-pereira mentioned to me that he was having the same problem (I think he use mac?). That's why, for now, I assume the code only works well in Linux.
So the current version apparently doesn't work in windows. Probably this problem caused by difference in how the OS implement forking technique which in turns affect the pickling of objects.
My idea to fix is to implement pickle "getstate" method in some classes so that the threading still works and doesn't screws up the whole project. But this is a major fix, so it'll take times to develop the fix for this issue.
@jair-pereira mentioned to me that he was having the same problem (I think he use mac?). That's why, for now, I assume the code only works well in Linux.