我用python写的程序运算速度过慢

我用python写了一个flexpart模拟的印痕结果和排放清单相乘的代码,但是运算速度很慢;
我的使用的办法是先提取排放清单和印痕结果相同的经度范围以及对应的值,存成二维列表;再和印痕的经纬度相减,只要两者的插值的绝对值小于0.125,我就让两者相乘,但是运算速度超级慢,有没有人能帮我解决这问题;附上了写的代码!

data = []
with open(path1) as f:
    line = f.readlines()
    for i in range(len(line)):
        if i <= 5:
            continue
        lines = line[i]
        lines = lines.strip()
        lines = lines.strip("[]")
        lines = lines.split(" ")
        data.append(lines)

emis = [[0]*5 for i in range(nlat*nlon)]
for ii in range(nlat*nlon):
    emis[ii][0] = ii // nlon
    emis[ii][1] = ii % nlon
    emis[ii][2] = lat[ii//nlon]
    emis[ii][3] = lon[ii%nlon]
for i in range(nlat):
    for j in range(nlon):
        if float(data[i][j]) == -9999.0:
            data[i][j] = 0
        else:
            emis[i * nlon + j][4] = float(data[i][j])
emis = sorted(emis,key=lambda x:x[2])

emiss = []
for i in range(len(emis)):
    if (29.05 <= emis[i][2] <= 49.45 and 81.05 <= emis[i][3] <= 109.95):
        emiss.append(emis[i])

list_fp = [[0]*3 for i in range(len(lat_fp)*len(lon_fp))]
for i in range(len(lat_fp)):
    for j in range(len(lon_fp)):
        list_fp[i*len(lon_fp)+j][0] = lat_fp[i]
        list_fp[i*len(lon_fp)+j][1] = lon_fp[j]

for i in range(len(emiss)):
    for j in range(len(list_fp)):
        if abs(emiss[i][2] - list_fp[j][0] <= 0.125) and abs(emiss[i][3] - list_fp[j][1] <= 0.125):
            list_fp[j][2] = emiss[i][4]

img

先用print(time.time())计算每一步执行的时间,然后再对慢的部分进行优化

像这种很多式子来进行运算的我建议封装成函数或者类,然后你可以自己去学一下,多线程或者多进程,可以提升运行速度的