CPU 密集开 4 线程加速几倍
按 GIL 模型,CPU 密集、4 线程,parallel_gain("cpu", 4) 交回几?
GIL 模型:parallel_gain(种类, n)——CPU 密集在 GIL 下不加速(1)、IO 密集能重叠(约 n);one_at_a_time=同时只 1 个线程跑字节码;use_processes=CPU 密集用多进程绕开。
def parallel_gain(kind, n):
"""CPU 密集在 GIL 下不加速(1);IO 密集能重叠(约 n)。"""
return 1 if kind == "cpu" else n
def one_at_a_time(n_threads):
"""GIL 下同一时刻真正在跑 Python 字节码的线程数。"""
return 1
def use_processes(kind):
"""CPU 密集要真并行 —— 用多进程绕开 GIL。"""
return kind == "cpu"
print(parallel_gain("cpu", 4))
全部评论