我听说过“如果您想从并行应用程序中获得最大性能,您应该创建与计算机拥有的 CPU 一样多的进程,并在每个进程中创建一些(多少?)线程”。
这是真的吗?
我写了一段代码来实现这个成语:
import multiprocessing, threading
number_of_processes = multiprocessing.cpu_count()
number_of_threads_in_process = 25 # some constant
def one_thread():
# very heavyweight function with lots of CPU/IO/network usage
do_main_work()
def one_process():
for _ in range(number_of_threads_in_process):
t = threading.Thread(target=one_thread, args=())
t.start()
for _ in range(number_of_processes):
p = multiprocessing.Process(target=one_process, args=())
p.start()
这是对的吗?我的do_main_work
功能真的会并行运行,不会遇到任何 GIL 问题吗?
谢谢你。