概括
GOCI数据还在下载中,4T的硬盘已经装满两个了,现在想看最终的下载速度是多少,个人感觉应该是8m/s左右。之前都是手动计算六个小时或一晚上的平均速度,现在想看下每小时的平均速度,顺便学习下Python的Pandas模块。主要参考该教程:十分钟快速入门 Pandas。
思路
获取下载文件的属性值,统计一定时间段内的下载大小,得出该段时间内的平均下载速度,作图展示。
代码
# -*- coding: utf-8 -*-
import os,time,glob
import pandas as pd
import matplotlib.pyplot as plt
DIR = "K:\\GOCI_L1_2013" #存放路径
PATTERN = "./*.gz" #查询文件格式
UNIT = 1024 #单位换算
MIN = 13
MAX = 23
def get_frame():
data={
'name' : [],
'size_' : [], #字节大小,加'_'避免和DataFrame本身size属性重合
'atime' : [], #上次访问时间
'atime_':[], #格式化上次访问时间
'mtime' : [], #最后一次修改时间
'mtime_':[], #格式化最后一次修改时间
'ctime' : [], #创建时间
'ctime_':[], #格式化创建时间
}
file_list = file_list=glob.glob(PATTERN) #获取文件列表
for file in file_list: #获取每个文件属性信息
data['name'].append(file.split('\\')[-1])
stat = os.stat(file)
data['size_'].append(stat[-4])
data['atime'].append(stat[-3])
data['mtime'].append(stat[-2])
data['ctime'].append(stat[-1])
data['atime_'].append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(stat[-3])))
data['mtime_'].append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(stat[-2])))
data['ctime_'].append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(stat[-1])))
frame = pd.DataFrame(data)
return frame
def get_speed(frame,mi,ma):
data={
'time':[],
'speed':[]
}
for i in range(mi,ma):
min_str = '2018-12-20 {:02d}:00:00'.format(i)
max_str = '2018-12-20 {:02d}:00:00'.format(i+1)
data['time'].append(i+0.5)
#data['time'].append('{:02d}-{:02d}'.format(i,i+1))
data['speed'].append(frame[(frame.ctime_>min_str)&(frame.mtime_<max_str)].size_.sum()/1024/1024/3600)
frame = pd.DataFrame(data)
return frame
if __name__=="__main__":
os.chdir(DIR)
frame_data = get_frame()
frame_speed = get_speed(frame_data,MIN,MAX)
print(frame_speed)
frame_speed.plot(x='time',y='speed')
plt.show()
input('按任意键结束')
结果
这是十二月二十一号的分时下载速度,从图中可以看出,一点之后下载速度都在10m/s以上,可能大家一点之后都休息了(夜猫子这么少,不科学),六点多是下载速度最大的时候,可以达到15m/s(这是为什么呢),到十一点之后,速度就再也没有超过10m/s,看来十一点多大家都起来了。晚上下载速度比较差,其中一度断网。