Python Docs itself recommends the threading module.
Note
The thread module has been renamed to _thread in Python 3.0. The 2to3 tool will
automatically adapt imports when converting your sources to 3.0; however, you
should consider using the high-level threading module instead.
The threading module lays on top of the thread module, as stated in the threading docs
This module constructs higher-level threading interfaces on top of the lower level
thread module. See also the mutex and Queue modules.
So one would assume that the locks they use are very close to identical, but the threading module wraps the thread modules calls.
Indeed later in the threading docs, it states:
A primitive lock is a synchronization primitive that is not owned by a particular
thread when locked. In Python, it is currently the lowest level synchronization
primitive available, implemented directly by the thread extension module.
So in summary, they are most likely identical, and python itself recommends the threading module. So use that if you are in doubt.