[Python-ideas] Atomic counter / atomic increment

Ben Hoyt benhoyt at gmail.com
Thu Aug 25 14:10:42 EDT 2016


> As long as Python uses a GIL to protect C level function
> calls, you can use an iterator for this:
>
> import itertools
> x = itertools.count()
> ...
> mycount = next(x)
>

Yeah, that's a neat hack -- I saw it recommended on StackOverflow, and saw
it used in the standard library somewhere. I think that's probably okay in
the *CPython* stdlib, because it's CPython so you know it has the GIL. But
this wouldn't work in other Python implementations, would it (IronPython
and Jython don't have a GIL). Or when itertools.count() is implemented in
pure Python on some system? Seems like it could blow up in someone's face
when they're least expecting it. I also think using *iter*tools is a pretty
non-obvious way to get a thread-safe counter.

-Ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160825/09c26235/attachment-0001.html>


More information about the Python-ideas mailing list