相关疑难解决方法(0)

为什么 time.sleep(...) 不受 GIL 的影响?

根据我在研究 Python GIL 时的理解,一次只能执行一个线程(谁持有锁)。然而,如果这是真的,那么为什么这段代码只需要 3 秒的执行时间,而不是 15 秒呢?

import threading
import time

def worker():
    """thread worker function"""
    time.sleep(3)
    print 'Worker'

for i in range(5):
    t = threading.Thread(target=worker)
    t.start()
Run Code Online (Sandbox Code Playgroud)

根据对线程的直觉,我原以为这需要 3 秒,但确实如此。但是在了解了 GIL 并且可以立即执行一个线程之后,现在我看这段代码并想,为什么不花 15 秒?

python gil

5
推荐指数
2
解决办法
1102
查看次数

标签 统计

gil ×1

python ×1