如何预测python运行脚本需要多长时间?

2024-10-01 07:38:17 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想确保我的程序运行时,它是最佳的,例如,如果它将需要5个小时完成,我应该运行它通宵!在

我知道这个项目会结束,理论上我应该可以根据尺寸来决定长度。所以实际问题是:

我需要打开16个pickled文件,这些文件是pandas数据帧,加起来总共有1.5个gig。请注意,我还需要对数据帧执行此操作,这些数据帧总计为20 Gig,因此我需要的答案是,在给定的总Gig数量下,以下代码需要多长时间:

import pickle
import os
def pickleSave(data, pickleFile):
    output = open(pickleFile, 'wb')
    pickle.dump(data, output)
    output.close()
    print "file has been saved to %s" % (pickleFile)
def pickleLoad(pickleFile):
    pkl_file = open(pickleFile, 'rb')
    data = pickle.load(pkl_file)
    pkl_file.close()
    return data
directory = '/Users/ryansaxe/Desktop/kaggle_parkinsons/GPS/'
files = os.listdir(directory)
dfs = [pickleLoad(directory + i) for i in files]
new_file = directory + 'new_file_dataframe'
pickleSave(dfs,new_file)

因此,现在我需要编写一个如下所示的函数:

^{pr2}$

我不知道该怎么做,甚至不知道是否有可能。有什么想法吗?在


Tags: 文件数据importnewoutputdataosdef
1条回答
网友
1楼 · 发布于 2024-10-01 07:38:17

此执行时间完全取决于您的系统,即硬盘驱动器/SSD、处理器等。没有人可以预先告诉您在计算机上运行需要多长时间,您能够获得精确估计的唯一方法是在大小合计为100mb的示例文件上运行脚本,并记下所用时间,并以此为基础进行估算。在

def time_fun(data_size_in_gigs):
    benchmark = time_you_manually_tested_for_100mb
    time_to_run = data_size_in_gigs/0.1 * benchmark
    print "your code will take time_to_run hours to run"

编辑:事实上,您可能希望将这个基准(大小、时间)对保存到一个文件中,当您实际运行脚本时,您还会自动添加新的条目。例如,在您的函数中,您可能想要检索最接近您当前估计的数据大小的2个基准,并从中进行估算,只需取平均值并使其与您需要的data_size成比例。每一对相邻的基准点将定义一个不同的线性斜率,这将对其附近的数据最为精确。在

^{pr2}$

只需避免保存两个差异小于200mb的基准,因为实际时间可能会有所不同,并且可能会因为输入(999mb,100分钟)和(1gb,95分钟)之类的条目破坏您的估计。在

最后两个点定义的直线的投影将是您对新的所有时间高的数据大小的最接近的估计。在

相关问题 更多 >