Почему я не могу использовать operator.itemgetter в многопроцессорном пуле?

Следующая программа:

import multiprocessing,operator
f = operator.itemgetter(0)
# def f(*a): return operator.itemgetter(0)(*a)
if __name__ == '__main__':
    multiprocessing.Pool(1).map(f, ["ab"])

завершается со следующей ошибкой:

Process PoolWorker-1:
Traceback (most recent call last):
  File "/usr/lib/python3.2/multiprocessing/process.py", line 267, in _bootstrap
    self.run()
  File "/usr/lib/python3.2/multiprocessing/process.py", line 116, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.2/multiprocessing/pool.py", line 102, in worker
    task = get()
  File "/usr/lib/python3.2/multiprocessing/queues.py", line 382, in get
    return recv()
TypeError: itemgetter expected 1 arguments, got 0

Почему я получаю сообщение об ошибке (в cPython 2.7 и 3.2 в Linux x64) и почему оно исчезает, если я раскомментирую третью строку?

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

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