Есть некоторые функции обработки изображений, которые занимают приличное время. Необходимо реализовать параллельность. Потоки сразу отбрасываются, всему виной GIL. Пытаюсь подружить wxPython и multiprocessing. Взял за основу http://wiki.wxpython.org/LongRunningTasks и сделал то же самое, только с процессами. Все хорошо, gui на время выполнения процесса не зависает.
То есть примерно так:
class WorkerProcess(multiprocessing.Process): def __init__(self, *args, **kwargs): multiprocessing.Process.__init__(self, *args, **kwargs) self.start() def run(self): result = my_fuction() - тут функция обработки.
Может кто-то уже реализовывал подобное?
Выдрал из исходников, пытался как-то запустить из созданного процесса, ничего не выходит. Помогите, пожалуйста.
RUN = 0 class WorkerPool(multiprocessing.pool.Pool): Process = WorkerProcess def __init__(self, *args, **kwargs): multiprocessing.pool.Pool.__init__(self, *args, **kwargs) def map(self, func, iterable, chunksize=None): assert self._state == RUN return self.map_async(func, iterable, chunksize)