Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多处理。进程子类在Linux上工作,但在Windows上不工作_Python_Windows_Multiprocessing_Pickle_Gasp - Fatal编程技术网

Python 多处理。进程子类在Linux上工作,但在Windows上不工作

Python 多处理。进程子类在Linux上工作,但在Windows上不工作,python,windows,multiprocessing,pickle,gasp,Python,Windows,Multiprocessing,Pickle,Gasp,我正试图在Windows上工作,但当我导入时,我倒吸了一口气;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

我正试图在Windows上工作,但当我导入时,我倒吸了一口气;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
文件“C:\Python26\lib\site packages\gasp\backend.py”,第142行,在创建屏幕中
screen.updater.start()
文件“C:\Python26\lib\multiprocessing\process.py”,第104行,在开始处
self.\u popen=popen(self)
文件“C:\Python26\lib\multiprocessing\forking.py”,第239行,在\uuu init中__
转储(进程对象、到子进程、最高\u协议)
文件“C:\Python26\lib\multiprocessing\forking.py”,第162行,在转储中
ForkingPickler(文件、协议).dump(obj)
文件“C:\Python26\lib\pickle.py”,第224行,位于转储文件中
自我保存(obj)
文件“C:\Python26\lib\pickle.py”,第331行,保存
自我保存(obj=obj,*rv)
文件“C:\Python26\lib\pickle.py”,第419行,在save\u reduce中
保存(状态)
文件“C:\Python26\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
保存目录中第649行的文件“C:\Python26\lib\pickle.py”
self.\u batch\u setitems(obj.iteritems())
文件“C:\Python26\lib\pickle.py”,第681行,在批处理设置项中
保存(v)
文件“C:\Python26\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
文件“C:\Python26\lib\pickle.py”,第725行,在save\u inst中
保存(东西)
文件“C:\Python26\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
保存目录中第649行的文件“C:\Python26\lib\pickle.py”
self.\u batch\u setitems(obj.iteritems())
文件“C:\Python26\lib\pickle.py”,第681行,在批处理设置项中
保存(v)
文件“C:\Python26\lib\pickle.py”,第331行,保存
自我保存(obj=obj,*rv)
文件“C:\Python26\lib\pickle.py”,第396行,在save\u reduce中
保存(cls)
文件“C:\Python26\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
文件“C:\Python26\lib\pickle.py”,第748行,在save\u global中
(对象、模块、名称))
PicklingError:无法pickle:找不到多进程。进程。\u MainProcess
你知道为什么我在WindowsXP而不是Ubuntu Linux 9.04上出现这个错误吗


它看起来像是
screen.updater
updater(multiprocessing.Process)
()的一个实例,如果这有帮助的话。有问题的文件位于您的
更新程序
类有一个成员
屏幕
,它本身有一个成员
进程
,该进程接收
多处理.current\u process()的值

调用
updater.start()
时,它会尝试对更新程序进行pickle处理。这只发生在Windows上,因为Linux使用
fork()
而不是酸洗。但是,无法对当前进程对象进行pickle并引发异常

要解决此问题,可以删除
进程
成员