使用dask的delayed,加速Python
import time
from time import sleep
from dask import delayed
def inc(x):
sleep(1)
for i in range(100):
x+=i
return x+1
def add(x,y):
for i in range(100):
x+=i
y+=i
return x+y
def no_delay():
x = inc(1)
y = inc(2)
z = add(x, y)
print(z)
def delay():
x = delayed(inc)(1)
y = delayed(inc)(2)
z = delayed(add)(x, y)
# print(z)
print(z.compute())
if __name__ == '__main__':
t1=time.time()
no_delay()
t2=time.time()
print("no_delay time:",t2-t1)
# z.visualize()
t3 = time.time()
delay()
print("delay time:",time.time()-t3)
# print(time.time()-t1)
# 结果:
19805
no_delay time: 2.010301113128662
19805
delay time: 1.0089519023895264
- 可以看出一个简单的程序达到了两倍的速度,甚至快于多线程多进程
- 原理待补充,其他应用待补充