Suggested generator to add to threading module.
Andrae Muys
nospam at no.spam
Sat Jan 17 04:08:56 EST 2004
Aahz wrote:
> In article <7934d084.0401152058.164a240c at posting.google.com>,
> Andrae Muys <amuys at shortech.com.au> wrote:
>
>>Found myself needing serialised access to a shared generator from
>>multiple threads. Came up with the following
>>
>>def serialise(gen):
>> lock = threading.Lock()
>> while 1:
>> lock.acquire()
>> try:
>> next = gen.next()
>> finally:
>> lock.release()
>> yield next
>
>
> I'm not sure this is generic enough to go in the standard library.
> Usually, I'd recommend that someone wanting this functionality consider
> other options in addition to this (such as using Queue.Queue()).
While I fully appreciate the importance of a Queue.Queue in implementing
a producer/consumer task relationship, this particular function provides
serialised access to a *passive* data-stream. With the increasing
sophistication of itertools and I feel there maybe an argument for
supporting shared access to a generator.
Anyway I thought it was worth offering as a possible bridge between the
itertools and threading modules. If I'm mistaken, then it's no major loss.
Andrae
More information about the Python-list
mailing list