何百万ものアイテムのリストを生成し、最初のリストに基づいて別のリストを生成するスクリプトを書いています。メモリが非常に速くいっぱいになり、スクリプトは続行できません。リストをファイルに直接保存してから、ファイル行を直接ループするのは良い考えだと思いました。これを行う最も効率的な方法は何ですか?
編集:
行ごとにツリーを生成しようとしています。row5_nodes は何百万ものアイテムを取得でき、row6_nodes の生成に使用するため削除できません
import random
class Node:
def __init__(self, id, name, parent=None):
self.id = id
self.name = name
self.parent = parent
def write_roots(root_nodes, roots):
global index
index = 0
for x in xrange(0,roots):
node = Node(index,"root"+str(x))
root_nodes.append(node);
f.write(str(node.id)+","+str(node.name)+","+str(node.parent)+"\n")
index += 1;
return
def write_row(parent_nodes, new_nodes, children):
global index
for parent_node in parent_nodes:
for x in xrange(0,children):
node = Node(index,"cat"+str(parent_node.id)+"-"+str(x), parent_node.id)
new_nodes.append(node);
f.write(str(node.id)+","+str(node.name)+","+str(node.parent)+"\n")
index += 1;
return
f = open("data.csv", "wb")
roots = 1000
root_nodes =[]
row1_nodes =[]
row2_nodes =[]
row3_nodes =[]
row4_nodes =[]
row5_nodes =[]
row6_nodes =[]
row7_nodes =[]
row8_nodes =[]
row9_nodes =[]
write_roots(root_nodes, roots)
print "1"
write_row(root_nodes, row1_nodes, random.randrange(0,10))
print "2"
write_row(row1_nodes, row2_nodes, random.randrange(0,10))
print "3"
write_row(row2_nodes, row3_nodes, random.randrange(0,10))
print "4"
write_row(row3_nodes, row4_nodes, random.randrange(0,10))
print "5"
write_row(row4_nodes, row5_nodes, random.randrange(0,10))
print "6"
f.close()