1

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 ?

1 Answer 1

3

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.