我尝试创建
multiprocessing.Queue
的继承子类,就像我为 queue.Queue
所做的那样,但我收到错误:
Traceback (most recent call last):
File "f:\d\multiprocessing-samples\test.py", line 4, in <module>
class DataMultiProcQueue(multiprocessing.Queue):
TypeError: method expected 2 arguments, got 3
这是重现此错误的代码,我测试了 Python 3.10、3.11、3.12 中是否存在该错误。
import multiprocessing
class DataMultiProcQueue(multiprocessing.Queue):
def __init__(self):
super().__init__(self)
if __name__ == "__main__":
my_queue = DataMultiProcQueue()
my_queue.put(1)
print(my_queue.get())
我错过了什么吗?
multiprocessing.Queue
实际上是 Queue
类实例的 multiprocess.context.DefaultContext
工厂方法。
(导入模块后,
multiprocessing
模块的命名空间将填充为multiprocessing/__init__.py
中此实例的所有公共成员。)
真正的
Queue
类是multiprocessing.queues.Queue
,所以你需要写:
import multiprocessing.queues
class DataMultiProcQueue(multiprocessing.queues.Queue):
# …