threads created with threading.Thread() always get a default name "Thread" instead of a discriminating one.
CPython for instance appends a sequencenumber or thread id so we can discriminate threads easily ("Thread-1", "Thread-2", ...).

Added simple patch.
I've added the _newname function to threading.py (mirorred from cpython)
Threads now get named Thread-1, Thread-2, ... as they are created, so they have discriminating names by default.

Is it important for the name to be based on an incrementing counter.
I have a working change that fixes this issue. I initially used an integer counter, incrementing by one each time. But there is a remote possibility of a clash in thread names with this scenario, since the counter wraps around at 2**31.
I'd prefer to use the hashCode of the thread object itself, which will lower the probability of clashes.
So thread names would look like this
>>> from threading import Thread as t
>>> t().getName()
u'Thread-14662467'
>>> t().getName()
u'Thread-6815360'
>>> t().getName()
u'Thread-8640702'
>>> t().getName()
u'Thread-20730792'
>>> t().getName()
u'Thread-32316862'
>>> t().getName()
u'Thread-31983457'
>>> t().getName()
u'Thread-29881213'
>>> t().getName()
u'Thread-27649674'
>>> t().getName()
u'Thread-10545552'

Nah, it's just what CPython does in its threading.py
The docs say "By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number." So as long as the name is unique, and N is a number, we should be fine.