0
我有相當大的csv文件,我需要操縱/逐行修改(因爲每行可能需要不同的修改規則),然後將它們寫出到另一個csv與正確格式。閱讀,格式,然後編寫大型CSV文件
目前,我有:
import multiprocessing
def read(buffer):
pool = multiprocessing.Pool(4)
with open("/path/to/file.csv", 'r') as f:
while True:
lines = pool.map(format_data, f.readlines(buffer))
if not lines:
break
yield lines
def format_data(row):
row = row.split(',') # Because readlines() returns a string
# Do formatting via list comprehension
return row
def main():
buf = 65535
rows = read(buf)
with open("/path/to/new.csv",'w') as out:
writer = csv.writer(f, lineterminator='\n')
while rows:
try:
writer.writerows(next(rows))
except StopIteration:
break
即使我通過map
使用多處理和防止內存過載有發電機,它仍然需要我超過2分鐘來處理40000行。說實話,不應該花那麼多。我甚至從生成器輸出生成了一個嵌套列表,並試圖一次性將數據寫入一個大文件,這是一個逐塊塊化的方法,並且仍然需要很長時間。我在這裏做錯了什麼?