Я попытался скопировать этот пример из этой лекции по мультипроцессированию Джесси Ноллер (как рекомендовано в другом посте SO) [http://pycon.blip.tv/file/1947354?filename=Pycon-IntroductionToMultiprocessingInPython630.mp4]
Но по какой-то причине я получаю сообщение об ошибке, как будто оно игнорирует мои определения функций:
Я нахожусь на Windows XP (win32) , которая, как я знаю, имеет ограничения в отношении многопроцессорной библиотеки в 2.6, которая требует, чтобы все могло быть изменено
from multiprocessing import Process
import time
def sleeper(wait):
print 'Sleeping for %d seconds' % (wait,)
time.sleep(wait)
print 'Sleeping complete'
def doIT():
p = Process(target=sleeper, args=(9,))
p.start()
time.sleep(5)
p.join()
if __name__ == '__main__':
doIT()
Выход:
Evaluating mypikklez.py
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Python26\lib\multiprocessing\forking.py", line 342, in main
self = load(from_parent)
File "C:\Python26\lib\pickle.py", line 1370, in load
return Unpickler(file).load()
File "C:\Python26\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python26\lib\pickle.py", line 1090, in load_global
klass = self.find_class(module, name)
File "C:\Python26\lib\pickle.py", line 1126, in find_class
klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'sleeper'
Ошибка, вызывающая проблему: AttributeError: у объекта 'module' нет атрибута 'sleeper'
Как простая функция, как она есть, я не могу понять, какова будет задержка.
Это только для целей самообучения основных понятий. Я не пытаюсь заранее оптимизировать любую проблему реального мира.
Спасибо.