为什么处理器时间突然变长?

时间:2013-12-25 06:59:50

标签: python pandas processor

在执行读取和处理大量数据的程序时,我面临着处理器时间从特定点突然变长的现象。

以下是详细说明。

目标数据的目录构成是日/小时/分钟,并且在每个分钟目录中存储大约700个数据文件(hdf5)。例如,01/23/52 / file1.h5。每个h5文件的大小约为200kB。因此,数据的总大小为每分钟140MB,每小时8.4GB和每天200GB。我的程序读取h5文件并使用pandas每隔一分钟存储数据并每隔一小时处理一次。

以下代码是我程序的摘录。

import pandas as pd
import time
...
hours=["00","01",......,"23"]
minutes=["00","01",.....,"59"]
...
f=open("log.txt","w")
for thishour in hours:
    onehourdata=pd.DataFrame()
    for thisminute in minutes:
        filepath=pathtodata+"/"+thishour+"/"+thisminute+"/"
        filelist=os.listdir(filepath)
        onemindata=pd.DataFrame()
        dflist=[]
        ptime1=time.clock()
        for thisfile in filelist:
            filename=filepath+thisfile
            store=pd.HDFStore(filename)
            newdata=store["table"]
            store.close()
            dflist.append(newdata)
        ptime2=time.clock()
        f.write("hour:{0} min:{1} p2-p1:{2}".format(thishour,thisminute,ptime2-ptime1))

        onemindata=pd.concat(dflist)
        onehourdata=pd.concat([onehourdata,onemindata])
    onehourdata=onehourdata.groupby([column1,column2,column3],as_index=False).sum()
...
...

我执行了程序并获得了log.txt

hour:00 min:00 p2-p1:15.01
...
...
...
hour:20 min:50 p2-p1:17.02
hour:20 min:51 p2-p1:14.33
hour:20 min:52 p2-p1:40.25
hour:20 min:53 p2-p1:42.52
...
...
hour:22 min:30 p2-p1:41.62
...
...
hour:23 min:59 p2-p1:50.21

当我为同一天的数据执行程序时,处理器时间从同一点变长。此外,结果是相同的,虽然我执行生成孙子进程并使用fork杀死父进程。当使用line profiler进行调查时,结果发现newdata = store [“table”]的行花费的时间最多。

环境是Ubuntu Server 13.04-x86_64,内存大小为512GB。

为什么处理器时间突然变长?

谢谢。

0 个答案:

没有答案