Re: Eseguire un'applicazione/script a step
Luca Alzetta <[email protected]> Sun, 8 Mar 2026 13:45:29 +0100
| Newsgroups | gmane.linux.debian.user.italian |
|---|---|
| Message-ID | <CAFTdZUCMC9KAO10Rz0pB1=txvrRd_ry3MFRWJtQgJG=eTCyU6Q@mail.gmail.com> |
--000000000000e479f4064c82a9c9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Io di solito interrompo con una richiesta di input, cos=C3=AD posso evidenz= iare anche il punto a cui sono arrivato con l'elaborazione con messaggi personalizzati. Il dom 8 mar 2026, 11:45 Francesco Potort=C3=AC <[email protected]> ha sc= ritto: > >La mia esigenza era (era perch=C3=A9 ho gi=C3=A0 risolto per questo caso= ) quella di > >elaborare un grosso file di testo contenente righe lunghissime. > ... > >Mi sono fatto uno script che faceva questo, ma mi sono accorto che dovev= o > >lasciare acceso il PC qualche giorno (probabilmente 3-4 giorni) > ... > >Quello che ho fatto io =C3=A8 molto semplice, ho configurato il numero d= i righe > >da trattare ad ogni step, salvato il risultato di ogni step in un file > >diverso e salvato lo step attuale in un file. > >Se interrompo l'esecuzione, allora riparte dallo step attuale > >sovrascrivendo quanto avevo gi=C3=A0 fatto la volta precedente sul file > dedicato > >a quello step. > >Alla fine tutti i file elaborati vengono concatenati ottenendo cos=C3=AC= il > >risultato voluto. > > Hai usato il metodo classico per affrontare questo problema. > > >Ho usato sed per prendere solo l'intervallo di righe attuali. Questo non > >=C3=A8 certamente ottimale, anzi =C3=A8 lentissimo su file di queste dim= ensioni. > >Ottimale sarebbe stato farsi un programma in C/C++ o simile dove salvars= i > >la posizione del file e ripartire esattamente da quella, > > Non credo che tu possa fare velocemente di meglio. Sed =C3=A8 estremamen= te > efficiente, in generale, se lo usi correttamente. > > E il metodo che dici butta via al massimo una sezione del file una volta > al giorno. Basta che le sezioni dei file siano ragionevolmente piccole > (per esempio ne puoi elaborare 1000 al giorno) e il tempo sprecato =C3=A8 > trascurabile. > > Guarda le GNU coreutils, per esempio Split e Csplit, ma potresti trovare > anche altro che fa al caso tuo. In particolare, se usi Split e Csplit e > ammesso che la tua elaborazione lo consenta, puoi facilmente parallelizza= re > le operazioni su diversi pezzi. > > -- fp > > --000000000000e479f4064c82a9c9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto">Io di solito interrompo con una richiesta di input, cos= =C3=AD posso evidenziare anche il punto a cui sono arrivato con l'elabo= razione con messaggi personalizzati.</div><br><div class=3D"gmail_quote gma= il_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">Il dom 8 mar 2026= , 11:45 Francesco Potort=C3=AC <<a href=3D"mailto:[email protected]">P= [email protected]</a>> ha scritto:<br></div><blockquote class=3D"gmail_= quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1= ex">>La mia esigenza era (era perch=C3=A9 ho gi=C3=A0 risolto per questo= caso) quella di<br> >elaborare un grosso file di testo contenente righe lunghissime.<br> ...<br> >Mi sono fatto uno script che faceva questo, ma mi sono accorto che dove= vo<br> >lasciare acceso il PC qualche giorno (probabilmente 3-4 giorni)<br> ...<br> >Quello che ho fatto io =C3=A8 molto semplice, ho configurato il numero = di righe<br> >da trattare ad ogni step, salvato il risultato di ogni step in un file<= br> >diverso e salvato lo step attuale in un file.<br> >Se interrompo l'esecuzione, allora riparte dallo step attuale<br> >sovrascrivendo quanto avevo gi=C3=A0 fatto la volta precedente sul file= dedicato<br> >a quello step.<br> >Alla fine tutti i file elaborati vengono concatenati ottenendo cos=C3= =AC il<br> >risultato voluto.<br> <br> Hai usato il metodo classico per affrontare questo problema.<br> <br> >Ho usato sed per prendere solo l'intervallo di righe attuali. Quest= o non<br> >=C3=A8 certamente ottimale, anzi =C3=A8 lentissimo su file di queste di= mensioni.<br> >Ottimale sarebbe stato farsi un programma in C/C++ o simile dove salvar= si<br> >la posizione del file e ripartire esattamente da quella,<br> <br> Non credo che tu possa fare velocemente di meglio.=C2=A0 Sed =C3=A8 estrema= mente efficiente, in generale, se lo usi correttamente.<br> <br> E il metodo che dici butta via al massimo una sezione del file una volta al= giorno.=C2=A0 Basta che le sezioni dei file siano ragionevolmente piccole = (per esempio ne puoi elaborare 1000 al giorno) e il tempo sprecato =C3=A8 t= rascurabile.<br> <br> Guarda le GNU coreutils, per esempio Split e Csplit, ma potresti trovare an= che altro che fa al caso tuo.=C2=A0 In particolare, se usi Split e Csplit e= ammesso che la tua elaborazione lo consenta, puoi facilmente parallelizzar= e le operazioni su diversi pezzi.<br> <br> -- fp<br> <br> </blockquote></div> --000000000000e479f4064c82a9c9--