3

所以我想确保我的程序在最佳状态下运行,例如,如果需要 5 个小时才能完成,我应该在夜间运行它!

我知道这个程序会结束,理论上我应该能够根据大小确定长度。所以这是实际的问题:

我需要打开 16 个腌制文件,这些文件是 pandas DataFrame,总共 1.5 个演出。请注意,我还需要使用总计 20 个演出的 DataFrame 来执行此操作,因此我需要的答案是一种告诉给定总演出量以下代码需要多长时间的方法:

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)

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

def time_fun(data_size_in_gigs):
    #some algorithm here
    print "your code will take ___ hours to run"

我不知道如何解决这个问题,或者是否有可能。有任何想法吗?

4

1 回答 1

3

此执行时间完全取决于您的系统,即硬盘驱动器/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"

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

     |                  .
     |                 .
time |               .
     |            .
     |       .
     |_._________________
              size

例如,请避免保存相差小于 200mb 的 2 个基准,因为实际时间可能会有所不同,并且可能会破坏您的估计,例如 (999mb, 100 分钟) 后跟 (1gb, 95 分钟)。

由最后两个点定义的线的投影将是您对新的历史最高数据大小的最接近估计。

于 2013-05-21T15:11:29.540 回答