简介
多进程 vs 多线程
CPU密集型用多进程;IO密集型用多线程。
实例1
在科学计算中使用multiprocessing进行多进程并行计算。
- 前提:多个方法func1,func2,…,funcN是相互独立的,可以并行计算。
- 当每个func的运行时间都较长时,利用多进程并行计算才会极大提高运行效率。原因:使用多进程本身会有一定的时间开销。
实例代码
注意:通过sleep(t)
来模拟控制func运行消耗的时间
def func1(x):
print(f'当前进程:{os.getpid()},计算func1中......')
time.sleep(5)
return x**2
def func2(x):
print(f'当前进程:{os.getpid()},计算func2中......')
time.sleep(5)
return x**3
def test1():
"""单进程计算
"""
print('方法1:单进程计算')
print(f'当前主进程:{os.getpid()}')
start = time.time()
a = func1(2)
b = func2(2)
c = a + b
end = time.time()
t = end - start
print('c=', c)
print(f'计算完成,共用时:{t:.2f}s')
def tes