questo è un precedente question in cui per migliorare le prestazioni tempo di una funzione in pitone ho bisogno di trovare un modo efficace per dividere il mio file di testomodo Efficiente di dividere un file di testo di grandi dimensioni in python
ho il seguente testo di file (più di 32 GB) non allineati
....................
0 274 593869.99 6734999.96 121.83 1,
0 273 593869.51 6734999.92 121.57 1,
0 273 593869.15 6734999.89 121.57 1,
0 273 593868.79 6734999.86 121.65 1,
0 272 593868.44 6734999.84 121.65 1,
0 273 593869.00 6734999.94 124.21 1,
0 273 593868.68 6734999.92 124.32 1,
0 274 593868.39 6734999.90 124.44 1,
0 275 593866.94 6734999.71 121.37 1,
0 273 593868.73 6734999.99 127.28 1,
.............................
la prima e la seconda colonna sono l'ID (es: 0 -273) della posizione x, y, z punto in una griglia.
def point_grid_id(x,y,minx,maxy,distx,disty):
"""give id (row,col)"""
col = int((x - minx)/distx)
row = int((maxy - y)/disty)
return (row, col)
il (minx, maxx)
è l'origine della mia griglia con dimensioni distx,disty
. I numeri delle piastrelle Id sono
tiles_id = [j for j in np.ndindex(ny, nx)] #ny = number of row, nx= number of columns
from [(0,0),(0,1),(0,2),...,(ny-1,nx-1)]
n = len(tiles_id)
ho bisogno di tagliare il file ~ 32 GB in n (= len(tiles_id))
numero di file.
posso farlo senza ordinare ma leggendo n volte il file. Per questo motivo desidero trovare un efficiente metodo di divisione per il file che inizia con il modulo (0,0) (= tiles_id[0])
. Dopo di che posso leggere solo una volta i file divisi.
come non usare Python? –
I LOVE Python !! –
Non sei sicuro di quanto sia davvero efficace ottenere con Python per ordinare un file di quelle dimensioni. –