加快Python代码时间 start=time.time() 导入csv f=打开('Speed_Test.csv','r+')) coordReader=csv.reader(f,分隔符=',') 计数=-1 成功跳闸=0 行程=0 对于coordReader中的行: 成功的单次=0 计数+=1 R=间隔*0.30 如果计数=0: 持续 如果26
我有这段代码,解释这段代码会非常耗时,但它的运行速度并没有我想要的那么快。有没有人认为我可以做些什么来加速这个过程?如有任何建议,将不胜感激加快Python代码时间 start=time.time() 导入csv f=打开('Speed_Test.csv','r+')) coordReader=csv.reader(f,分隔符=',') 计数=-1 成功跳闸=0 行程=0 对于coordReader中的行: 成功的单次=0 计数+=1 R=间隔*0.30 如果计数=0: 持续 如果26,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有这段代码,解释这段代码会非常耗时,但它的运行速度并没有我想要的那么快。有没有人认为我可以做些什么来加速这个过程?如有任何建议,将不胜感激 本质上,它读取2个横向坐标和纵向坐标,并将其更改为笛卡尔坐标,然后根据距离以特定间隔长度沿从原点坐标到目标坐标的路径遍历每个坐标。尽管有一个300+坐标位置的数据帧(df),但在执行此操作时,它会检查每个行程间隔,并查看其中一个是否在半径R内,然后存储最短的on。一旦结果已知,就利用任何机会打破for循环。例如,在For line循环的末尾,检查succe
本质上,它读取2个横向坐标和纵向坐标,并将其更改为笛卡尔坐标,然后根据距离以特定间隔长度沿从原点坐标到目标坐标的路径遍历每个坐标。尽管有一个300+坐标位置的数据帧(df),但在执行此操作时,它会检查每个行程间隔,并查看其中一个是否在半径R内,然后存储最短的on。一旦结果已知,就利用任何机会打破for循环。例如,在
For line
循环的末尾,检查successful\u single==len(coords\u line)
。但是只要语句if循环计数!=0
为False,因为此时successful\u single
不会递增;您知道它的值永远不会达到len(coords\u line)
。因此,您可以在此处中断for item的循环-您已经知道这不是一次“成功之旅”。可能还有其他类似的情况。一旦知道结果,就利用任何机会中断for循环。例如,在For line
循环的末尾,检查successful\u single==len(coords\u line)
。但是只要语句if循环计数!=0
为False,因为此时successful\u single
不会递增;您知道它的值永远不会达到len(coords\u line)
。因此,您可以在那里打破项目的循环-您已经知道这不是一次“成功之旅”。可能还有其他类似的情况。您考虑过合并并并行运行这些计算吗
您的代码还建议变量R,interval可能会创建一个依赖项,并需要一个线性解决方案您是否考虑过合并并并行运行这些计算
您的代码还建议使用变量R,interval可能会创建依赖项并需要线性解决方案如果这是工作代码,我建议将其发布在上。如果这是工作代码,我建议将其发布在上。
start = time.time()
import csv
f = open('Speed_Test.csv','r+')
coordReader = csv.reader(f, delimiter = ',')
count = -1
successful_trip = 0
trips = 0
for line in coordReader:
successful_single = 0
count += 1
R = interval*0.30
if count == 0:
continue
if 26 < float(line[0]) < 48.7537144 and 26 < float(line[2]) < 48.7537144 and -124.6521017 < float(line[1]) < -68 and -124.6521017 < float(line[3]) < -68:
y2,x2,y1,x1 = convertCoordinates(float(line[0]),float(line[1]),float(line[2]),float(line[3]))
coords_line,interval = main(y1,x1,y2,x2)
for item in coords_line:
loop_count = 0
r = 0
min_dist = 10000
for i in range(len(df)):
dist = math.sqrt((item[1]-df.iloc[i,0])**2 + (item[0]-df.iloc[i,1])**2)
if dist < R:
loop_count += 1
if dist < min_dist:
min_dist = dist
r = i
if loop_count != 0:
successful_single += 1
df.iloc[r,2] += 1
trips += 1
if successful_single == (len(coords_line)):
successful_trip += 1
end = time.time()
print('Percent Successful:',successful_trip/trips)
print((end - start))