如何在 Python 中加快 gzip 文件的处理速度
How to speed up of pocessing of gzip file in Python
我需要从文件 gzip
创建一个 uniq values([0]-position, delimeter '|')
列表,权重 1.5 GB
。
但是处理多了2,5个小时,请帮忙加快处理速度。
import gzip
import time
with gzip.open("gzipfilename.gz", "rb") as gz:
uniqSub = []
for i in enumerate(gz):
sepValues = str(gz.readline()).split("|")
if sepValues[0] not in uniqSub:
uniqSub.append(sepValues[0])
print(len(uniqSub))
import gzip
import time
with gzip.open("gzipfilename.gz", "rb") as gz:
uniqSub = set()
for line in gz:
sep, _ = line.split(b'|', 1)
uniqSub.add(sep)
print(len(uniqSub))
# If you need to print...
for item in uniqSub:
print(str(item, 'utf-8'))
这简化了多行读取,删除了 enumerate()
因为你没有使用它,最多拆分一次,因为你只使用第一个标记,并使用集合来加速集合会员测试。应该会更快。
我需要从文件 gzip
创建一个 uniq values([0]-position, delimeter '|')
列表,权重 1.5 GB
。
但是处理多了2,5个小时,请帮忙加快处理速度。
import gzip
import time
with gzip.open("gzipfilename.gz", "rb") as gz:
uniqSub = []
for i in enumerate(gz):
sepValues = str(gz.readline()).split("|")
if sepValues[0] not in uniqSub:
uniqSub.append(sepValues[0])
print(len(uniqSub))
import gzip
import time
with gzip.open("gzipfilename.gz", "rb") as gz:
uniqSub = set()
for line in gz:
sep, _ = line.split(b'|', 1)
uniqSub.add(sep)
print(len(uniqSub))
# If you need to print...
for item in uniqSub:
print(str(item, 'utf-8'))
这简化了多行读取,删除了 enumerate()
因为你没有使用它,最多拆分一次,因为你只使用第一个标记,并使用集合来加速集合会员测试。应该会更快。