我有很多文件,每个文件有几百万行;每行是一个转储的数据条目,长度为数百个字符。行是成组的,前两个字符告诉我它的行类型,我用它来解析它。这种结构禁止我将行加载到数据帧中,例如,禁止将行一次加载到其他任何行中。
对于每行,我目前都创建一个字典vals = {},然后依次沿
行浏览约五十个键vals {'name'} =行[2:24]
vals {'state'} =行[24:26]
我可以按简单的方式同时执行或并行执行,而不是依次执行五十个任务?
是
vals {'name'},vals {'state'} = row [2:24],row [24:26]
如果我同时为许多条目进行分配,会更快吗?我也可以将其重新表述为列表理解。这会比顺序执行要快吗?
答案 0 :(得分:1)
要回答您的问题,不,多次分配不会加快您的程序的速度。这是因为多重分配语法只是在不同行上写入多个分配的一种不同方式。
例如
vals{'name'},vals{'state'} = row[2:24],row[24:26]
等效于
vals{'name'}= row[2:24]
vals{'state'} = row[2:24]
如果您要优化代码,则应从profiling it开始,以确定花费最多时间的部分。我还将检查以确保您没有从同一个文件中进行多次读取,因为与从内存中读取相比,这些读取非常慢。如果可能,您应该先read the entire file into memory,然后再处理它。