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
