Почему я могу передать метод экземпляра multiprocessing.Process, но не multiprocessing.Pool?

Я пытаюсь написать приложение, которое применяет функцию одновременно сmultiprocessing.Pool, Я хотел бы, чтобы эта функция была методом экземпляра (чтобы я мог определять его по-разному в разных подклассах). Это не представляется возможным; как я узнал в другом месте, по-видимому,связанные методы не могут быть засолены, Так почему начинаетсяmultiprocessing.Process со связанным методом в качестве целевой работы? Следующий код:

import multiprocessing

def test1():
    print "Hello, world 1"

def increment(x):
    return x + 1

class testClass():
    def process(self):
        process1 = multiprocessing.Process(target=test1)
        process1.start()
        process1.join()
        process2 = multiprocessing.Process(target=self.test2)
        process2.start()
        process2.join()

    def pool(self):
        pool = multiprocessing.Pool(1)
        for answer in pool.imap(increment, range(10)):
            print answer
        print
        for answer in pool.imap(self.square, range(10)):
            print answer

    def test2(self):
        print "Hello, world 2"

    def square(self, x):
        return x * x

def main():
    c = testClass()
    c.process()
    c.pool()

if __name__ == "__main__":
    main()

Производит этот вывод:

Hello, world 1
Hello, world 2
1
2
3
4
5
6
7
8
9
10

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Python27\Lib\threading.py", line 551, in __bootstrap_inner
    self.run()
  File "C:\Python27\Lib\threading.py", line 504, in run
    self.__target(*self.__args, **self.__kwargs)
  File "C:\Python27\Lib\multiprocessing\pool.py", line 319, in _handle_tasks
    put(task)
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed

Почему процессы могут обрабатывать связанные методы, но не пулы?

Ответы на вопрос(3)

Ваш ответ на вопрос