我是靠谱客的博主 魁梧金鱼,最近开发中收集的这篇文章主要介绍python可以处理特别大的数据文件吗_将大文件中的数据分块以进行多处理?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当fileobj很大时,list(file_obj)可能需要大量内存。我们可以通过使用itertools在需要时提取行块来减少内存需求。

特别是,我们可以使用reader = csv.reader(f)

chunks = itertools.groupby(reader, keyfunc)

将文件分割成可处理的块,以及groups = [list(chunk) for key, chunk in itertools.islice(chunks, num_chunks)]

result = pool.map(worker, groups)

使多处理池一次处理num_chunks块。

通过这样做,我们只需要足够的内存来保存一些(num_chunks)块,而不是整个文件。import multiprocessing as mp

import itertools

import time

import csv

def worker(chunk):

# `chunk` will be a list of CSV rows all with the same name column

# replace this with your real computation

# print(chunk)

return len(chunk)

def keyfunc(row):

# `row` is one row of the CSV file.

# replace this with the name column.

return row[0]

def main():

pool = mp.Pool()

largefile = 'test.dat'

num_chunks = 10

results = []

with open(largefile) as f:

reader = csv.reader(f)

chunks = itertools.groupby(reader, keyfunc)

while True:

# make a list of num_chunks chunks

groups = [list(chunk) for key, chunk in

itertools.islice(chunks, num_chunks)]

if groups:

result = pool.map(worker, groups)

results.extend(result)

else:

break

pool.close()

pool.join()

print(results)

if __name__ == '__main__':

main()

最后

以上就是魁梧金鱼为你收集整理的python可以处理特别大的数据文件吗_将大文件中的数据分块以进行多处理?的全部内容,希望文章能够帮你解决python可以处理特别大的数据文件吗_将大文件中的数据分块以进行多处理?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部