Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在数据帧中的python循环会随着时间的推移而减慢_Python_Performance_Loops_Dataframe_Nested - Fatal编程技术网

我在数据帧中的python循环会随着时间的推移而减慢

我在数据帧中的python循环会随着时间的推移而减慢,python,performance,loops,dataframe,nested,Python,Performance,Loops,Dataframe,Nested,我正在遍历一个非常大的数据帧(11361 x 22679),并使用pyplot将每行的值转换为像素图像。所以最后我应该有11361张图像,151 x 151像素(我在末尾加上0使其成为正方形)。 allDF是33个数据帧的列表,对应于图像需要保存到的新文件名中的33个子目录 我尝试在每次迭代结束时删除每个数据帧和图像。 我已经尝试将浮点值转换为int。 我在每次迭代结束时都尝试过gc.collect()(尽管我知道它是多余的) 我已采取措施,通过始终引用原始数据,不存储任何附加值 唯一有帮助的是

我正在遍历一个非常大的数据帧(11361 x 22679),并使用pyplot将每行的值转换为像素图像。所以最后我应该有11361张图像,151 x 151像素(我在末尾加上0使其成为正方形)。 allDF是33个数据帧的列表,对应于图像需要保存到的新文件名中的33个子目录

我尝试在每次迭代结束时删除每个数据帧和图像。 我已经尝试将浮点值转换为int。 我在每次迭代结束时都尝试过gc.collect()(尽管我知道它是多余的) 我已采取措施,通过始终引用原始数据,不存储任何附加值

唯一有帮助的是,如果我一次处理一帧。它仍然会减慢速度,但因为迭代次数较少,所以速度就没有那么慢了。因此,我认为内部循环或其中一个函数是问题所在

def shape_pixels(imglist):
    for i in range(122):
        imglist.append(0.0)
    imgarr = np.array(imglist).reshape((151,151))
    imgarr.reshape((151,151))
    return imgarr

def create_rbg_image(subpath,imgarr,imgname):
    # create/save image
    img = plt.imshow(imgarr, cmap=rgbmap)
    plt.axis('off')
    plt.savefig(dirpath+subpath+imgname,
                transparent=True,
                bbox_inches=0,pad_inches=0)

for i in range(len(allDF)):
    for j in range(len(allDF[i])):
        fname = allDF[i]['File Name'].iloc[j][0:36]
        newlist = allDF[i].iloc[j][1:].tolist()
        newarr = shape_pixels(allDF[i].iloc[j][1:].tolist())
        create_rbg_image(newFileNames[i]+'\\',shape_pixels(allDF[i].iloc[j][1:].tolist()),allDF[i]['File Name'].iloc[j][0:36])

我希望能够为整个数据集运行代码,并在完成后返回到它,但我一夜之间运行了它,只完成了不到1/3的部分。如果它继续减速,我永远也做不完。 第一分钟生成150多幅图像,第二分钟生成80幅图像。然后是48、32、27等等。。最终只需要几分钟就可以创建一个


我没有绘图。关闭('all')有很大帮助,但我改用PIL和hexadec值,这明显更有效,我能够在20分钟内生成所有11k+图像。关闭('all')有很大帮助,但我改用PIL和hexadec值,这大大提高了效率,我能够在不到20分钟的时间内生成所有11k+图像

内存使用情况如何?只需spitballin',但试着在您的create_rgb_图像的底部添加一个
plt.close('all')
{'total':8450404352',available':309242288',center':63.4',used':5357912064',free':309242288}plt.close('all')起到了显著的作用,但它仍然慢了很多。还有其他建议吗?内存使用情况如何?只需spitballin',但试着在您的create_rgb_image{'total':8450404352,'available':30924922288,'percent':63.4,'used':5357912064,'free':30924922288}plt的底部添加一个
close('all')。close('all')帮助很大,但速度仍然慢了很多。还有其他建议吗?