I think the two shouldn't be mixed. On Apr 16, 2017 7:58 AM, "Victor Stinner" <victor.stin...@gmail.com> wrote:
> Thread safety is very complex and has an impact on performance. I dislike > the idea of providing such property to generators which can have a complex > next method. > > IMHO it's better to put a generator in wrapper which adds thread safety. > > What do you think? > > Victor > > Le 14 avr. 2017 18:48, "Serhiy Storchaka" <storch...@gmail.com> a écrit : > >> When use a generator from different threads you can get a ValueError >> "generator already executing". Getting this exception with the single >> thread is a programming error, it in case of different threads it could be >> possible to wait until other thread finish executing the generator. The >> generator can be made thread-safe after wrapping it in a class that acquire >> a lock before calling the generator's __next__ method (for example see >> [1]). But this is not very efficient of course. >> >> I wondering if it is worth to add support of thread-safe generators in >> the stdlib. Either by providing standard decorator (written in C for >> efficiency), or adding threading support just in the generator object. The >> latter may need increasing the size of the generator object for a lock and >> thread identifier (but may be GIL is enough), but should not affect >> performance since locking is used only when you faced with a generator >> running in other thread. >> >> This topic already was raised on Python-Dev [2] but didn't moved too >> much. There are a number of StackOverflow questions about threads and >> generators. We have already encountered this issue in the stdlib. Once in >> regrtest with the -j option ([3], [4]), other time after reimplementing >> tempfile._RandomNameSequence as a generator [5]. >> >> [1] http://anandology.com/blog/using-iterators-and-generators/ >> [2] https://mail.python.org/pipermail/python-dev/2004-February/0 >> 42390.html >> [3] https://bugs.python.org/issue7996 >> [4] https://bugs.python.org/issue15320 >> [5] https://bugs.python.org/issue30030 >> >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ >> > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/