многопроцессорный подпроцесс работает на Linux, но не на Windows

Я пытаюсь заставить python-gasp работать в Windows, но когда я import gasp; gasp.begin_graphics() import gasp; gasp.begin_graphics() Я получаю следующую трассировку:

  File "C:\Python26\lib\site-packages\gasp\backend.py", line 142, in create_screen screen.updater.start() File "C:\Python26\lib\multiprocessing\process.py", line 104, in start self._popen = Popen(self) File "C:\Python26\lib\multiprocessing\forking.py", line 239, in __init__ dump(process_obj, to_child, HIGHEST_PROTOCOL) File "C:\Python26\lib\multiprocessing\forking.py", line 162, in dump ForkingPickler(file, protocol).dump(obj) File "C:\Python26\lib\pickle.py", line 224, in dump self.save(obj) File "C:\Python26\lib\pickle.py", line 331, in save self.save_reduce(obj=obj, *rv) File "C:\Python26\lib\pickle.py", line 419, in save_reduce save(state) File "C:\Python26\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Python26\lib\pickle.py", line 649, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Python26\lib\pickle.py", line 681, in _batch_setitems save(v) File "C:\Python26\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Python26\lib\pickle.py", line 725, in save_inst save(stuff) File "C:\Python26\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Python26\lib\pickle.py", line 649, in save_dict self._batch_setitems(obj.iteritems()) File "C:\Python26\lib\pickle.py", line 681, in _batch_setitems save(v) File "C:\Python26\lib\pickle.py", line 331, in save self.save_reduce(obj=obj, *rv) File "C:\Python26\lib\pickle.py", line 396, in save_reduce save(cls) File "C:\Python26\lib\pickle.py", line 286, in save f(self, obj) # Call unbound method with explicit self File "C:\Python26\lib\pickle.py", line 748, in save_global (obj, module, name)) PicklingError: Can't pickle <class 'multiprocessing.process._MainProcess'>: it's not found as multiprocessing.process._MainProcess 

Любая идея, почему я получаю эту ошибку в Windows XP, но не на Ubuntu Linux 9.04?

Похоже, screen.updater является экземпляром Updater(multiprocessing.Process) ( def ), если это помогает. Этот файл находится по адресу http://bazaar.launchpad.net/~gasp-dev/gasp-core/main/annotate/head%3A/gasp/backend.py

One Solution collect form web for “многопроцессорный подпроцесс работает на Linux, но не на Windows”

У вашего класса Updater есть screen участника, который сам имеет членский process который получает значение multiprocessing.current_process() .

Когда вы вызываете updater.start() , он пытается разжечь программу обновления. Это происходит только в Windows, потому что Linux использует fork() вместо травления. Однако объект текущего процесса не может быть маринован, и возникает исключение.

Чтобы исправить это, вы можете удалить член process .

 
Interesting Posts for Van-Lav

Панды: медленное преобразование даты

Окно Tkinter фокусируется на Mac OS X

не может использовать current_user в макросе jinja2?

Статические активы не отображаются для колбы на эластичном бобовом стебле

Имеет ли смысл использовать префиксы венгерских нотации в интерпретируемых языках?

Как преобразовать sklearn.OneHotEncoder для восстановления исходных данных?

Очистка созданного пользователем уценки с кодом в ней

Используйте одно приложение для нескольких экземпляров uwsgi

Поиск индекса элемента с указанием списка, содержащего его в Python

Проблемы эффективности с поиском корреляций между списками внутри списков

Возможно ли воспроизвести randn () MATLAB с NumPy?

Почему операции Python math.ceil () и math.floor () возвращают float вместо целых чисел?

Как присоединиться к той же таблице в sqlalchemy

Как создать скудную разреженную матрицу из фреймворка pandas?

Форматирование строки с форматом «{0: d}» дает код неизвестного формата «d» для объекта типа «float»

Python - лучший язык программирования в мире.