[Python] Mettere in pausa gli altri threads

Manlio Perillo manlio.perillo a gmail.com
Gio 3 Ott 2013 15:23:20 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 03/10/2013 10:43, Luca wrote:
> Salve lista,
> 
> Vorrei chiedere consiglio. Sto facendo un programmino che si
> occupa di copiare, cancellare e muovere dei files. Una delle
> opzioni │ quella di copiare *simultaneamente* pi file tramite i
> threads.
> 
> Non c'│ nessun problema (a parte forse l'effettiva utilit¢ della 
> cosa)

Perche' ne metti in dubbio l'utilit¢?
La cosa da mettere in dubbio, magari, e' la scelta di usare i threads.

Puoi, infatti, eseguire il comando ``cp`` di sistema con l'opzione
``-i``, usando il modulo subprocess.

> quando l'opzione di sovrascrittura viene decisa a priori. Ma in 
> caso di finestra di dialogo con la domanda "Vuoi sovrascrivere?" 
> **dovrei sospendere anche gli altri thread, attendere la
> risposta** e poi riprendere il tutto utilizzando quest'ultima per
> decidere il comportamento anche degli altri threads.
> 

Perche' mai dovresti eseguire il controllo di esistenza del file di
destinazione all'interno di un thread.
Questa non │ una operazione che prende troppo tempo.  Quello che devi
eseguire in un thread separato e' la copia del file.

Puoi eseguire il controllo in modo semplice nel thread principale,
aprendo il file di destinazione in modalit¢ esclusiva
(O_EXCL, http://docs.python.org/2/library/os.html#open-constants), e
passando poi il descrittore di file al thread pool che si occupa della
copia, utilizzando una queue.

> [...]


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iEUEARECAAYFAlJNb8gACgkQscQJ24LbaURq0QCY7YhJWXvdwBQPpfhkBGS/BlQM
PQCfVncP8croKMnRa3rvkxBuWJ/eagU=
=nWro
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python