【发布时间】:2015-07-22 13:04:41
【问题描述】:
我正在寻找我正在执行的任务的性能改进。
任务很简单:从 .txt 文件到 SQL 数据库。
所以 txt 文件包含一堆看起来像这样的行:
200101 35.922 2.127 1.182 1.182 1.418 1.654
解释:
200111: 是信息,包含在20 (channel num) 01 (page num) 11 (code)
其余的双精度值只是值:I1、I2...直到 I6
因此,SQL 文件将具有 [channel, page, code, I1, I2, I3, I4, I5, I6, passed] 列作为列
问题在于,在 txt 文件中,code 可以是 00、11、10、01 或 22,并且根据代码,我需要使用 I 的值执行一项或多项操作来决定通过=1 或通过=0。例如,在这种情况下,如果code=11,passed=1 if I1>I3 and I6<1
txt上的行是按代码排序的。
所以,有了这个解释,我基本上在做的是这样的事情:
with open(txtFile, 'r') as txt:
for line in txt:
currentLine = line.split(' ')[0]
if currentLine.endswith('00'):
#do some actions here
if currentLine.endswith('01'):
#do some actions here
#...
#and so on
# and of course write to SQL file
那么,有什么比使用ifclause 检查每一行更好或更省时的方法
【问题讨论】:
-
你为什么不分析你的脚本并找出它慢的地方而不仅仅是猜测呢?几条
if语句所花费的时间将与磁盘IO 相形见绌。 -
我会使用 csv 模块来解析你的文件
-
@Colonel,完成,瓶颈在代码的那部分
-
在
if语句中检查?听起来很腥。您可以将函数存储在字典中并使用前两个字符作为键。 -
您可能会发现 pandas 很有用
标签: python performance processing-efficiency