Python multiprocessing.manager问题sys.args
我正在一个多处理的小型windows服务应用程序中运行以下python代码行Python multiprocessing.manager问题sys.args,python,windows,windows-services,multiprocessing,python-multiprocessing,Python,Windows,Windows Services,Multiprocessing,Python Multiprocessing,我正在一个多处理的小型windows服务应用程序中运行以下python代码行 multiprocessing.Manager() 问题在于,在运行windows服务时,模块sys集合中似乎没有属性argv。因此,在python多处理分叉库中出现以下错误。我希望有人能对这个问题有所了解 问题的堆栈跟踪(在windows服务中运行multiprocessing.Manager时): 更新 我的问题的一个可能的解决方案是,如果在运行时没有设置值,那么我手动设置sys.argv值,但这似乎非常不和谐。
multiprocessing.Manager()
问题在于,在运行windows服务时,模块sys集合中似乎没有属性argv。因此,在python多处理分叉库中出现以下错误。我希望有人能对这个问题有所了解
问题的堆栈跟踪(在windows服务中运行multiprocessing.Manager时):
更新
我的问题的一个可能的解决方案是,如果在运行时没有设置值,那么我手动设置sys.argv
值,但这似乎非常不和谐。但这可能是唯一的解决办法。堆垛工怎么想
if not hastattr(sys, 'argv'):
sys.argv = []
但是,这又导致multiprocessing.manager出现了一个新问题,代码中出现了意外的EOFError
File "C:\python27\lib\multiprocessing\__init__.py", line 99, in Manager
m.start()
File "C:\python27\lib\multiprocessing\managers.py", line 528, in start
self._address = reader.recv()
EOFError
由于设置
sys.argv=[]
不起作用,如果有脚本名称,您可以使用dosys.argv=['scriptname']
或仅sys.argv=['']
。如果运行python,导入sys
,然后查看sys.argv
,就会得到后者,例如
~$ python
>>> import sys
>>> sys.argv
['']
Python初始化后调用此函数:
PySys_SetArgv(argc, argv);
解释器无法以其他方式访问argc/argv,而只能从main()显式传递它们。我现在没有访问Windows系统的权限,但是如果您显式设置
sys.argv=[]
?@ldx.a.ldy.c ah yes,我想把它作为一个可能的解决方案,只是想知道这是否是解决这个问题的唯一方法。我不得不这么做似乎有点不太和谐。然后,它也会导致我的文章更新中所描述的错误。不知何故,在以独立方式进行单元测试时,我遇到了更新中提到的一个问题。在PyDev中进行单元测试时,一切正常运行。你在更新中解决过你的问题吗?感谢@sigmavirus24的评论,即使我按照你说的做了,我仍然遇到了问题中列出的第二个异常。我不确定这是否是一个可能的python错误,我只是猜测。我从未见过这个问题,而且我经常使用多处理。您最好在freenode上输入python。他们中的许多人比我知识渊博得多。
PySys_SetArgv(argc, argv);