from senpy.plugins import AnalysisPlugin

import multiprocessing


class AsyncPlugin(AnalysisPlugin):
    def _train(self, process_number):
        return process_number

    def _do_async(self, num_processes):
        with multiprocessing.Pool(processes=num_processes) as pool:
            values = pool.map(self._train, range(num_processes))
        return values

    def activate(self):
        self.value = self._do_async(4)

    def analyse_entry(self, entry, params):
        values = self._do_async(2)
        entry.async_values = values
        yield entry

from senpy.plugins import AnalysisPlugin

import multiprocessing


def _train(process_number):
    return process_number


class AsyncPlugin(AnalysisPlugin):
    def _do_async(self, num_processes):
        pool = multiprocessing.Pool(processes=num_processes)
        values = pool.map(_train, range(num_processes))

        return values

    def activate(self):
        self.value = self._do_async(4)

    def analyse_entry(self, entry, params):
        values = self._do_async(2)
        entry.async_values = values
        yield entry

Fix multiprocessing tests in python2.7
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.
