我在一个多处理的小型 Windows 服务应用程序中运行以下 python 代码行。
multiprocessing.Manager()
问题是在运行 Windows 服务时模块 sys 设置中似乎没有属性 argv。因此,我在 python 多处理分叉库中出现以下错误。我希望有人能够对这个问题有所了解。
问题的堆栈跟踪(在 Windows 服务中运行 multiprocessing.Manager 时):
File "C:\python27\lib\multiprocessing\__init__.py", line 99, in Manager
m.start()
File "C:\python27\lib\multiprocessing\managers.py", line 524, in start
self._process.start()
File "C:\python27\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "C:\python27\lib\multiprocessing\forking.py", line 252, in __init__
cmd = get_command_line() + [rhandle]
File "C:\python27\lib\multiprocessing\forking.py", line 339, in get_command_line
if process.current_process()._identity==() and is_forking(sys.argv):
AttributeError: 'module' object has no attribute 'argv
更新
我的问题的一种可能的解决方案是,sys.argv
如果在运行时未设置该值,则我手动设置该值,但这似乎非常不合pythonic。但可能是唯一的解决方案。stackoverflow 的人是怎么想的?
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