Thread-ID - how much could be?

Peter Otten __peter__ at web.de
Fri Sep 12 00:02:50 CEST 2014


Ervin Hegedüs wrote:

> Hi Peter,
> 
> thanks for the reply,
> 
> On Thu, Sep 11, 2014 at 09:48:18PM +0200, Peter Otten wrote:
>> Ervin Hegedüs wrote:
>> 
>> > Exception in thread Thread-82:
>> > ...
>> > My question is: how much thread ID could be totally? Is there any
>> > maximum number? And if the thread reached that, what will be
>> > done? Overlflowed? Couting from 0 again?
>> 
>> A quick peak into threading.py reveals
>> 
>> # Helper to generate new thread names
>> _counter = 0
>> def _newname(template="Thread-%d"):
>>     global _counter
>>     _counter += 1
>>     return template % _counter
>> 
>> class Thread:
>>     ...
>>     def __init__(self, group=None, target=None, name=None,
>>                  args=(), kwargs=None, *, daemon=None):
>>         ...
>>         self._name = str(name or _newname())
>> 
>> 
>> There is no upper limit to the thread name other than that you will
>> eventually run out of memory ;)
> 
> thanks - I hope that the memory will not run out by these
> threads... :)
> 
> Anyway, that means, on my system:
> 
>>>> import sys
>>>> print sys.maxint
> 9223372036854775807
> 
> the couter could be 9223372036854775807?
> 
> And after? :)

Try it!

>>> print sys.maxint + 1
9223372036854775808

When you start one thread per second

>>> sys.maxint / (60*60 * 24 * 365.25)
292271023045.3132

after less than 300 billion years the only thing that will change is the 
type:

>>> type(sys.maxint)
<type 'int'>
>>> type(sys.maxint + 1)
<type 'long'>





More information about the Python-list mailing list