Python:将大型列表转换为生成器?

2024-04-26 12:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经有了一个pythonlist类型变量,它包含6000000个条目,其中条目数据类型是pythondication

a = [{'a': .... }, {'a': ...} , ...]

因为它占用了太多的内存,所以我想把它转换成生成器之类的东西

问题是list变量是multiprocessing Pool的返回值,所以我不能在前面创建生成器

有什么建议吗


Tags: 内存类型条目multiprocessing建议list数据类型pool
2条回答

您可以使用^{}惰性地计算结果。这将防止生成一个大列表,但您可以通过提供chunksize参数以块的形式迭代结果:

results_generator = pool.imap(func, input_data, 64)  # chunks of 64

如果内存中已经有了它,那么将它转换为generator并不能解决问题。您需要创建一个generator,它将动态地从磁盘加载条目,从而不会同时将所有条目加载到内存中Here是一篇关于在Python中使用generators来处理内存限制的好文章

相关问题 更多 >