我面临这样一种现象:在执行一个读取和处理一些大数据的程序时,处理器的时间突然从某个特定点变长。你知道吗
具体如下。你知道吗
目标数据的目录构成为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。你知道吗
为什么时间突然变长了?你知道吗
谢谢你。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐