首先是_thread.py文件,这里实现底层的线程的一些方法

allocate =>获取锁
get_ident =>获取当前线程的唯一标识符
start_new_thread =>开启一个新线程
# eg: 打印传入的参数和当前线程的唯一标识符
import _thread
start_new_thread(lambda x: print(_thread.get_ident(), x), (0, ))

还有Rlock锁和_local类 threading文件使用了这里的实现,另外还加入了条件型锁(Condition),互斥锁(Semophore),线程类(Thread)和定时器(Timer)

from threading import Thread, get_ident
class MyThread(Thread):
  def __init__(self, x, y):
    self._x = x
    self._y = y
  def run(self):
    print(get_ident())
    return self._x ** self._y

MyThread(122, 233).run()

thread_local的实现 请看_threading_local.py的_localimpl类 有一个存放线程数据的全局字典,以id(thread)为键去存取该线程的数据