[CPyUG] windows下multiprocessing与zipimport不能同时工作的问题

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[CPyUG] windows下multiprocessing与zipimport不能同时工作的问题

Leo Jay
Python支持直接运行一个.zip文件

我现在有一个zip包p.zip,里面有一个__main__.py文件,内容如下:

from multiprocessing import Process
import os

def f():
    print 'in f, pid:', os.getpid()

if __name__ == '__main__':
    print 'pid:', os.getpid()
    p = Process(target=f)
    p.start()
    p.join()


在linux下,直接运行python p.zip没有问题。
但在windows xp下,运行报错:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\python27\lib\multiprocessing\forking.py", line 346, in main
    prepare(preparation_data)
  File "C:\python27\lib\multiprocessing\forking.py", line 454, in prepare
    assert main_name not in sys.modules, main_name
AssertionError: __main__

我google了一下,貌似我的情况跟这里的描述类似:
http://bugs.python.org/issue10128

但我用他的patch还是不解决问题。

这可如何是好?
谢谢。

--
Best Regards,
Leo Jay

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] windows下multiprocessing与zipimport不能同时工作的问题

ubunoon-2
zip导入是通过sys.path_hooks的一个支持列表来支持的,你打印一下,是否有[<type 'zipimport.zipimporter'>]那个支持模块。

在 2011年12月12日 下午3:01,Leo Jay <[hidden email]>写道:
Python支持直接运行一个.zip文件

我现在有一个zip包p.zip,里面有一个__main__.py文件,内容如下:

from multiprocessing import Process
import os

def f():
   print 'in f, pid:', os.getpid()

if __name__ == '__main__':
   print 'pid:', os.getpid()
   p = Process(target=f)
   p.start()
   p.join()


在linux下,直接运行python p.zip没有问题。
但在windows xp下,运行报错:

Traceback (most recent call last):
 File "<string>", line 1, in <module>
 File "C:\python27\lib\multiprocessing\forking.py", line 346, in main
   prepare(preparation_data)
 File "C:\python27\lib\multiprocessing\forking.py", line 454, in prepare
   assert main_name not in sys.modules, main_name
AssertionError: __main__

我google了一下,貌似我的情况跟这里的描述类似:
http://bugs.python.org/issue10128

但我用他的patch还是不解决问题。

这可如何是好?
谢谢。

--
Best Regards,
Leo Jay

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html



--
To be pythoner
My blog: http://www.cnblogs.com/ubunoon/
珍珠饰品:http://zjyuezz.cn.alibaba.com/


--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Reply | Threaded
Open this post in threaded view
|

Re: [CPyUG] windows下multiprocessing与zipimport不能同时工作的问题

Leo Jay
2011/12/12 ubunoon <[hidden email]>:
> zip导入是通过sys.path_hooks的一个支持列表来支持的,你打印一下,是否有[<type
> 'zipimport.zipimporter'>]那个支持模块。
>

肯定是有的,“python p.zip”命令能运行,表明是支持zip文件的。
现在的问题就在于,用multiprocessing创建的进程不能正确地初始化,在prepare方法就抛异常退了。

--
Best Regards,
Leo Jay

--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: [hidden email]
退订: [hidden email] (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html