Python之线程
关于GIL
Python(特指CPython)的多线程不能利用多核的优势,这是因为全局解释锁(GIL)的限制。如果是cpu密集型(计算型)的任务,使用多线程GIL就会让多线程变慢。
GIL是必须的,这是Python设计的问题:Python解释器是非线程安全的。这意味着当从线程内尝试安全的访问Python对象的时候将有一个全局的强制锁。 在任何时候,仅仅一个单一的线程能够获取Python对象或者C API。每100个字节的Python指令解释器将重新获取锁,这(潜在的)阻塞了I/O操作。因为锁,CPU密集型的代码使用线程库时,不会获得性能的提高(但是当它使用之后介绍的多进程库时,性能可以获得提高)。