[Python] python threads, how to store results from a multithread code
Manlio Perillo
manlio.perillo a gmail.com
Sab 10 Dic 2011 17:46:40 CET
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 09/12/2011 21:18, Massimo Di Stefano ha scritto:
> Ciao,
>
> sto provando ad imparare ad usare la libreria thread … ma ho dei problemi :-(
>
I problemi veri non li hai ancora visti :-)
Attenzione a limitare l'uso dei thread: ad esempio se devi scaricare 100
files *evita* di eseguire 100 threads; le prestazioni ne potrebbero
risentire pesantemente.
Io userei un threadpool + map; "peccato" che sia disponibile solo in
multiprocessing (che usa i processi e non i thread):
http://docs.python.org/library/multiprocessing.html#using-a-pool-of-workers
> il mio obiettivo e' il download di alcuni file da internet con urlib
> salvarli in un file temporaneo
> e scrivere in una lista il path di tali file.
>
> is codice di seguito, e' scarica i file e li salva come file temporanei
> … ma non riesco a capire come salvarne una lista dei path.
>
> ########################################################################################
> # thread test
>
> import threading
> import urllib
> from tempfile import NamedTemporaryFile
>
> class download(threading.Thread):
> def __init__(self, sitecode):
> threading.Thread.__init__(self)
> self.sitecode = sitecode
> self.status = -1
>
> def run(self):
> #global filelist
> #filelist = []
> url = 'http://waterdata.usgs.gov/nwis/monthly?referred_module=sw&site_no='
> url += self.sitecode
> url += '&PARAmeter_cd=00060&partial_periods=on&format=rdb&submitted_form=parameter_selection_list'
Esiste un modo migliore per costruire una URL con dei parametri di query:
http://docs.python.org/library/urllib.html#urllib.urlencode
> tmp = NamedTemporaryFile(delete=False)
> urllib.urlretrieve(url, tmp.name)
> print 'loaded Monthly data for sitecode : ', self.sitecode
> #filelist.append(tmp.name)
> #return filelist
>
Perchè hai commentato filelist.append?
> [...]
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk7jjPAACgkQscQJ24LbaUTCUACgjaswDAZPoJSVDFFATuu85j3C
/5EAn0Rcsl1BpLT76LFkEIhC+bagAUa8
=mcLP
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python