On Mon, 2006-03-20 at 07:44 -0800, Ido Abramovich wrote: > I want to build a generator that can update it's content during > runtime, but I'm not sure whether what I'm doing works by mistake or > works by purpose. > > I've read PEP-255 about Generators, but nothing is mentioned about > changing the inner space of the generator during runtime - this could > mean that "it works by mistake" but from what I understand about > generators - this behavior is a by-product of the algorithm. > > I'm attaching an example of a generator and an iterator that are > supposed to do produce the same output. The Iterator doesn't work and > produces a RuntimeError while the Generator finishes the task > successfully. > > What do you think? is it safe to use the generator function? if not - > do you have another safe approach to add items to a generator during > runtime?
An approach, which worked for me (in Python 2.3) is to use a List: - One process (loosely defined here as an invocation of a callback from a framework with a mainloop, such as Tk) adds items to the List. - The generator is invoked by another callback and removes items from the List. The problem, which I had, was that I did not see an obvious way to yield control back to Tk (rather than to the generator's caller) whenever the List is empty. So I designed the generator to return None when the List is empty; and have the calling code (a callback function - see above) return control to Tk in this case. Does anyone know a better pattern for this? I use Python 2.3, but can switch to Python 2.4 if necessary. --- Omer -- Every good master plan involves building a time machine. Moshe Zadka My own blog is at http://tddpirate.livejournal.com/ My opinions, as expressed in this E-mail message, are mine alone. They do not represent the official policy of any organization with which I may be affiliated in any way. WARNING TO SPAMMERS: at http://www.zak.co.il/spamwarning.html