想请教网友们,我想优化python双重的for循环,请问可以如何去优化呢?在此感谢解答疑难!
import time
start=0
end=0
def test():
global start,end
n=0
while n<10:
start_time=time.time()
for i in range(1,10000):
for j in range(i,10000):
a=i+j
#此处省略叭叭叭行代码
end_time=time.time()
start+=start_time
end+=end_time
n+=1
test()
#检查运行耗时
print('耗时:%.2f秒'%(end-start))
望采纳
可以尝试以下几种方法来优化双重的 for 循环:
第1种方法实现如下(先通过pip install threading安装threading库):
import threading
def test():
n=0
while n<10:
start_time=time.time()
threads = []
for i in range(1,10000):
t = threading.Thread(target=inner_loop, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
end_time=time.time()
start+=start_time
end+=end_time
n+=1
def inner_loop(i):
for j in range(i,10000):
a=i+j
#此处省略叭叭叭行代码
test()
#检查运行耗时
print('耗时:%.2f秒'%(end-start))
第2种方式实现如下(先通过pip install numpy安装numpy库):
import numpy as np
def test():
n=0
while n<10:
start_time=time.time()
for i in range(1,10000):
for j in range(i,10000):
a = np.add(i, j)
#此处省略叭叭叭行代码
end_time=time.time()
start+=start_time
end+=end_time
n+=1
test()
#检查运行耗时
print('耗时:%.2f秒'%(end-start))
from numba import jit
import time
@jit()
def add_ab():
a = list(range(5000))
b = list(range(5000))
start = time.time()
for i in range(5000):
for j in range(5000):
c = a[i] + b[j]
print(time.time()-start)
add_ab()
望采纳