Python 使用大数据文件进行计算
我有一个非常大(比如几千个)的分区列表,类似于:Python 使用大数据文件进行计算,python,Python,我有一个非常大(比如几千个)的分区列表,类似于: [[9,0,0,0,0,0,0,0,0], [8,1,0,0,0,0,0,0,0], ..., [1,1,1,1,1,1,1,1,1]] 我要做的是为它们中的每一个应用一个函数(它输出少量的分区),然后将所有的输出放在一个列表中并删除重复项 我能够做到这一点,但问题是,如果我将上述列表直接放入python文件(尤其是滚动时),我的计算机会变得非常慢。是什么让它变慢了?如果使用内存加载整个列表 有没有办法将分区放在另一个文件中,让函数逐项读
[[9,0,0,0,0,0,0,0,0],
[8,1,0,0,0,0,0,0,0],
...,
[1,1,1,1,1,1,1,1,1]]
我要做的是为它们中的每一个应用一个函数(它输出少量的分区),然后将所有的输出放在一个列表中并删除重复项
我能够做到这一点,但问题是,如果我将上述列表直接放入python文件(尤其是滚动时),我的计算机会变得非常慢。是什么让它变慢了?如果使用内存加载整个列表
有没有办法将分区放在另一个文件中,让函数逐项读取列表
编辑:我正在添加一些代码。我的代码可能效率很低,因为我是个业余爱好者。所以我真正拥有的是一个分区列表,我想添加到其中:
listofparts3 = [[[3],[2,1],[1,1,1]],
[[6],[5,1],...,[1,1,1,1,1,1]],...]
def addtolist3(n):
a=int(n/3)-2
counter = 0
added = []
for i in range(len(listofparts3[a])):
first = listofparts3[a][i]
if len(first)<n:
for i in range(n-len(first)):
first.append(0)
answer = lowering1(fock(first),-2)[0]
for j in range(len(answer)):
newelement = True
for k in range(len(added)):
if (answer[j]==added[k]).all():
newelement = False
break
if newelement==True:
added.append(answer[j])
print(counter)
counter = counter+1
for i in range(len(added)):
added[i]=partition(added[i]).tolist()
return(added)
listofparts3=[[[3]、[2,1]、[1,1,1]],
[[6],[5,1],...,[1,1,1,1,1,1]],...]
def addtolist3(n):
a=int(n/3)-2
计数器=0
添加=[]
对于范围内的i(len(第三方清单[a]):
first=第三方清单[a][i]
如果len(first)几千个分区只使用少量内存,那么这可能不是问题的根源
加速函数应用程序的一种方法是使用Python3或Python2
消除重复的最快方法是将它们输入到Python对象中。文件的大小是多少?大约1 MB的纯文本。这不应该让您的计算机变慢。请张贴代码。我已经添加了一些代码。我认为它只是在python文件本身中有一个列表,这会减慢速度。主要是当我试图滚动文件中包含长列表的部分时,速度会变慢。您是否有机会在文本编辑器中打开.py文件中的大内容?如果有更好的方法,set()
会比dict()快吗?真的很好奇:)@pyjg很可能会更快。从本质上讲,dict和set都是隐藏的哈希表,但是,set不需要1)存储与每个键相关的值字段,2)需要优先选择关键字参数和实例dict的常用小dict用例。集合专门用于单一化和快速成员测试,因此它们在这些任务上往往比DICT更好一些,DICT必须服务于其他用例。也就是说,不同的用例和示例往往会触及每个容器的不同“最佳点”。