I have a class called "IterQueue which is an iter queue:
IterQueue.py
from multiprocessing import Process, Queue, Pool
import queue
class IterQueue(queue.Queue):
def __init__(self):
self.current = 0
self.end = 10000
def __iter__(self):
self.current = 0
self.end = 10000
while True:
yield self.get()
def __next__(self):
if self.current >= self.end:
raise StopIteration
current = self.current
self.current += 1
return current
I put items inside it in a different processes:
modulexxx.py
...
self.q1= IterQueue()
def function(self):
x = 1
while True:
x = x + 1
self.q1.put(x)
Everything works fine, but python gives me an error:
'IterQueue' object has no attribute 'not_full
I searched for this function so I implement it in my custom queue, but found nothing,
What's the solution to this ?
You inherited from Queue
and overrode __init__
, but never called its __init__
, so that was never run. That means that not_full
was never assigned, thus the error.
Unless you want to override its maxsize
default argument of 0, you just need to change your __init__
to:
def __init__(self):
super().__init__()
self.current = 0
self.end = 10000