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

2024-04-18 20:58:52 发布

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

我面临这样一种现象:在执行一个读取和处理一些大数据的程序时,处理器的时间突然从某个特定点变长。你知道吗

具体如下。你知道吗

目标数据的目录构成为day/hour/minute/,每分钟目录中存储约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()
...
...

我执行了这个程序,得到了如下结果日志.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服务器13.04-x86\u64,内存大小是512GB。你知道吗

为什么时间突然变长了?你知道吗

谢谢你。你知道吗


Tags: 数据storein程序fortime时间min