python-3.x – 多处理队列子类问题

python-3.x – 多处理队列子类问题,第1张

概述我想将multiprocessing.Queue子类化,以实现抓取队列块的进程.唯一的问题是,我得到一个奇怪的TypeError? #!/usr/bin/env python#whaaaaa!?from multiprocessing import Queueclass BufferQueue(Queue): '''A thread/process safe queue for 我想将multiprocessing.Queue子类化,以实现抓取队列块的进程.唯一的问题是,我得到一个奇怪的TypeError?
#!/usr/bin/env python#whaaaaa!?from multiprocessing import Queueclass BufferQueue(Queue):    '''A thread/process safe queue for append/popleft operations with the import    buffer.'''    def __init__(self,**kwargs):        super(BufferQueue,self).__init__(**kwargs)    def consume(self,lim):        '''Consume up to but no more than lim elements and return them in a new        List,cleaning up the buffer.        @params        lim -- the maximum (limit) to consume from the List.  If less items        exist in the List then that's fine too.        '''        lim = len(queue) if len(queue) < lim else lim        return [self.popleft() for i in range(lim)]

测试这个(我将其拆分,以便我不会拉其他任何东西)

| => ./tests/wtf_queue.py Traceback (most recent call last):  file "./tests/wtf_queue.py",line 10,in <module>    class BufferQueue(Queue):TypeError: method expected 2 arguments,got 3

编辑/更新:

解决方法 multiprocessing.Queue是一个创建队列的方法,因此您应该将其用作函数my_queue = Queue().
>>> from multiprocessing import Queue>>> type(Queue)<class 'method'>

正如您所看到的,不是“类型”,您将使用它来进行子类化.

如果要实现自己的队列,可以查看queue.Queue

编辑:

如果要从多处理子类化队列,请改用multiprocessing.queues.Queue,这是multiprocessing.Queue()返回的对象的类型.

总结

以上是内存溢出为你收集整理的python-3.x – 多处理队列子类问题全部内容,希望文章能够帮你解决python-3.x – 多处理队列子类问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存