(Python バージョン 2.6.5)
私は持っている:
boxes_with_sizes_added = [\
[0,0,0,1,1,1,0],\
[785,500,200,787,502,202,1],\
[400,500,600,404,504,604,2],\
[100,200,300,108,208,308,3],\
[50,60,70,51,61,71,0]\
# several millions more...
]
...それらは次の形式のボックスです: [x1,y1,z1,x2,y2,z2,rel_size]
そして、私は「チョッピング」メソッドを持っています:
def cubic_breakdown(box,division_factor):
if division_factor==1:
return[box]
elif division_factor>1:
boxes_out=[]
for k in range(division_factor):
for j in range(division_factor):
for i in range(division_factor):
boxes_out.append([\
(box[0]+((box[3]-box[0])/float(division_factor))*i),\
(box[1]+((box[4]-box[1])/float(division_factor))*j),\
(box[2]+((box[5]-box[2])/float(division_factor))*k),\
(box[0]+((box[3]-box[0])/float(division_factor))*(i+1)),\
(box[1]+((box[4]-box[1])/float(division_factor))*(j+1)),\
(box[2]+((box[5]-box[2])/float(division_factor))*(k+1)),\
box[6]\
])
return boxes_out
基本的に「ボックス」は「rel_size」に従って等分に「切り刻まれ」、リストに追加されます
chopped_boxes=[]
for box in boxes_with_sizes_added:
for chopped_box in cubic_breakdown(box,2**box[6]):
chopped_boxes.append(chopped_box)
しかし、あまりにも多くのボックスを処理しようとすると、特定の時点で「MemoryError」が発生します。何が問題ですか?リストまたはリスト出力をピクルする必要がありますか? 前もって感謝します!