pytest - 多线程提速
import time
def test1_test1():
time.sleep(1)
assert 1 == 1, "1==1"
def test1_test2():
time.sleep(1)
assert 1 == 1, "1==1"
上面2个函数,执行情况:
- 正常执行时,花费 2.08s
- 2个进程执行时,花费 1.18s
- 2个线程执行时,花费 1.15s
问题:python有GIL(全局解释器锁),同一时刻只能执行一条线程的字节码指令,那么为什么pytest执行用例时,多线程会加快执行速度?
暂时得到的答案:time sleep 属于IO bound的任务。在IO bound的时候切换CPU去执行其他的字节码