If you use a multiprocessing fork called pathos.multiprocesssing , you can directly use classes and class methods in multiprocess map functions. This is because cPickle used instead of pickle or cPickle , and dill can serialize almost anything in python.
pathos.multiprocessing also provides an asynchronous map function ... and it can map function with several arguments (for example, map(math.pow, [1,2,3], [4,5,6]) )
See: What can multiprocessing and dill do?
and: http://matthewrocklin.com/blog/work/2013/12/05/Parallelism-and-Serialization/
>>> from pathos.multiprocessing import ProcessingPool as Pool >>> >>> p = Pool(4) >>> >>> def add(x,y): ... return x+y ... >>> x = [0,1,2,3] >>> y = [4,5,6,7] >>> >>> p.map(add, x, y) [4, 6, 8, 10] >>> >>> class Test(object): ... def plus(self, x, y): ... return x+y ... >>> t = Test() >>> >>> p.map(Test.plus, [t]*4, x, y) [4, 6, 8, 10] >>> >>> p.map(t.plus, x, y) [4, 6, 8, 10]
Get the code here: https://github.com/uqfoundation/pathos