From e582ef07d4b9f537e31d31c1546df870a2bd361c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Fernando=20S=C3=A1nchez?= Date: Mon, 10 Apr 2017 20:14:40 +0200 Subject: [PATCH] Fix multiprocessing tests in python2.7 Closes #28 for python 2. Apparently, process pools are not contexts in python 2.7. On the other hand, in py2 you cannot pickle instance methods, so you have to implement Pool tasks as independent functions. --- tests/plugins/async_plugin/asyncplugin.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/plugins/async_plugin/asyncplugin.py b/tests/plugins/async_plugin/asyncplugin.py index 345ff2d..976e6c8 100644 --- a/tests/plugins/async_plugin/asyncplugin.py +++ b/tests/plugins/async_plugin/asyncplugin.py @@ -3,13 +3,15 @@ from senpy.plugins import AnalysisPlugin import multiprocessing -class AsyncPlugin(AnalysisPlugin): - def _train(self, process_number): - return process_number +def _train(process_number): + return process_number + +class AsyncPlugin(AnalysisPlugin): def _do_async(self, num_processes): - with multiprocessing.Pool(processes=num_processes) as pool: - values = pool.map(self._train, range(num_processes)) + pool = multiprocessing.Pool(processes=num_processes) + values = pool.map(_train, range(num_processes)) + return values def activate(self):