Python 继承多进程时发生断言错误。进程
我需要一个单独的过程,在初始化时打开一些文件,最后轻轻地关闭它们。为此,我从Python 继承多进程时发生断言错误。进程,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我需要一个单独的过程,在初始化时打开一些文件,最后轻轻地关闭它们。为此,我从进程继承了一个类。下面是一个简单的演示: 来自多处理导入进程的 从multiprocessing.process导入BaseProcess 类代理(进程): 定义初始化(自): 超级()。\uuuu初始化\uuuuu(自) def运行(自): 通过 如果名称=“\uuuuu main\uuuuuuuu”: proxy=proxy() proxy.start() proxy.join() 通过这段代码,我得到了一个断言异
进程
继承了一个类。下面是一个简单的演示:
来自多处理导入进程的
从multiprocessing.process导入BaseProcess
类代理(进程):
定义初始化(自):
超级()。\uuuu初始化\uuuuu(自)
def运行(自):
通过
如果名称=“\uuuuu main\uuuuuuuu”:
proxy=proxy()
proxy.start()
proxy.join()
通过这段代码,我得到了一个断言异常:
Traceback (most recent call last):
File "mp_proxy.py", line 11, in <module>
proxy = Proxy()
File "mp_proxy.py", line 6, in __init__
super().__init__(self)
File "/home/user/opt/anaconda3/lib/python3.7/multiprocessing/process.py", line 74, in __init__
assert group is None, 'group argument must be None for now'
AssertionError: group argument must be None for now
问题是:如何以适当的方式继承流程?也许我的想法是错误的
早些时候,在另一篇文章“”中描述了一个类似的错误,但是我没有看到该问题的解决方案。据我所知,该行为高度依赖于Python子版本。一点也不酷
附言:Ubuntu20.04,Anaconda3和Python3.7.6。它应该是super()。\uuu init\uuu()
而不是super()。\uu init\uuu(self)
在本例中,转换为super(Proxy,self)
,已将超级对象绑定到代理
-实例。在超级对象上调用方法,就像对方法所做的那样,而不显式地传递self
group
是BaseProcess中的第二个参数。
通过调用super()。
在您的代码中,您将其设置为self
,因此断言错误是一个愚蠢的错误。非常感谢。但是,当我尝试调试输出时,我无法解释第二个错误:AttributeError:“Proxy”对象没有属性“\u closed”
@EvgenyP.Kurbatov我没有复制这个特定错误,但无论如何,multiprocessing.process.BaseProcess
还不完整,无法由用户进行子类化。改用multiprocessing.Process
(multiprocessing.context.Process
)。
multiprocessing.process : Traceback (most recent call last):
File "mp_proxy.py", line 11, in <module>
proxy = Proxy()
File "mp_proxy.py", line 6, in __init__
super().__init__(self)
File "/home/user/opt/anaconda3/lib/python3.7/multiprocessing/process.py", line 74, in __init__
print(__name__, ":", group)
File "/home/user/opt/anaconda3/lib/python3.7/multiprocessing/process.py", line 254, in __repr__
elif self._closed:
AttributeError: 'Proxy' object has no attribute '_closed'