Kyl*_*ndt 9 python optimization datetime
我有一些日志解析代码需要将时间戳转换为datetime对象.我正在使用datetime.strptime但是这个函数根据cProfile的cumtime列使用了很多cputime.时间戳的格式为01/Nov/2010:07:49:33.
目前的功能是:
new_entry['time'] = datetime.strptime(
parsed_line['day'] +
parsed_line['month'] +
parsed_line['year'] +
parsed_line['hour'] +
parsed_line['minute'] +
parsed_line['second']
, "%d%b%Y%H%M%S"
)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何优化这个?
Mar*_*som 16
如果这些是固定宽度格式,那么就不需要解析该行 - 您可以使用切片和字典查找来直接获取字段.
month_abbreviations = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4,
'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8,
'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
year = int(line[7:11])
month = month_abbreviations[line[3:6]]
day = int(line[0:2])
hour = int(line[12:14])
minute = int(line[15:17])
second = int(line[18:20])
new_entry['time'] = datetime.datetime(year, month, day, hour, minute, second)
Run Code Online (Sandbox Code Playgroud)
以Glenn Maynard所示的方式进行测试表明,这个速度要快3倍.
| 归档时间: |
|
| 查看次数: |
4335 次 |
| 最近记录: |