> Per caso mi è capitato di pensare un po' al tuo problema e mi sono detto > che c'è qualcosa che non va'. Tu hai due casi ogni volta che copi un > file: la destinazione esiste oppure no. Se la destinazione non esiste > il thread non viene in qual modo influenzato e quindi non c'è necessità > che si blocchi in attesa di una risposta dell'utente. Mi sbaglio forse? > Perché in questo caso un lock banale risolve il tuo problema.
> Supponiamo di avere, nell'ordine, queste richieste di copia > > copy a b > copy c d > copy e f > > questo significa che la terza operazione, se vuole sovrascrivere f, blocca tutte le altre anche se non hanno nulla a che fare con f? Allora.... - Ho una lista di files che viene generata tramite filtri di inclusione e/o esclusione. - Questa lista viene passata al ciclo che esegue la copia file per file. - Per ogni file viene lanciato un Thread (con possibilità di limitare il numero di thread) - Durante la copia uno o più o tutti i file possono essere già presenti nella/e cartella/e di destinazione. - In caso venga chiamato con il parametro --overwrite=ASK, lo script, al PRIMO file esistente che trova deve bloccare tutto quindi: 1 - Threads già avviati ma che non hanno ancora fatto la verifica di os.path.exists (in effetti se è il primo gli altri non ci sono ancora arrivati) 2 - Ovviamente bloccare eventuali nuovi thread sul nascere. 3 - Attendere una risposta dall'utente. 4 - Reimpostare il parametro overwrite *globale*. 5 - Riprendere da dove si era fermato. A questo punto l'overwrire non sarà più ASK ma YES o NO, a seconda dei casi, e i rimanenti thread si comporteranno di conseguenza. Da notare che l'utilizzo dei thread è più per una questione grafica (progress bar multiple) che per una questione pratica. E che comunque non mi pare molto ultile la conferma da parte dell'utente se poi si propaga per tutti i file, a quel punto chiamare lo script con --overwrite=YES o NO è più logico. Credo io. ciao Luca
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python