Ciao, sto provando ad imparare ad usare la libreria thread … ma ho dei problemi :-(
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' tmp = NamedTemporaryFile(delete=False) urllib.urlretrieve(url, tmp.name) print 'loaded Monthly data for sitecode : ', self.sitecode #filelist.append(tmp.name) #return filelist sitecodelist = ['01046500', '01018500', '01010500', '01034500', '01059000', '01066000', '01100000'] for k in sitecodelist: get_data = download(k) get_data.start() ######################################################################################## per gevent il seguente codice funziona e mi restituisce : ######################################################################################## # gevent test import gevent from gevent import monkey import urllib from tempfile import NamedTemporaryFile def gen_data(sitecode, listapath): url1 = 'http://waterdata.usgs.gov/nwis/monthly?referred_module=sw&site_no=' url1 += sitecode url1 += '&PARAmeter_cd=00060&partial_periods=on&format=rdb&submitted_form=parameter_selection_list' tmp1 = NamedTemporaryFile(delete=False) urllib.urlretrieve(url1, tmp1.name) listapath.append(tmp1.name) sitecodelist = ['01046500', '01018500', '01010500', '01034500', '01059000', '01066000', '01100000'] lista = [] monkey.patch_all() jobs = [gevent.spawn(gen_data, sitecode, lista) for sitecode in sitecodelist] gevent.joinall(jobs) print lista ############################################################################################ ho provato a passare un lista vuota come input e farne l'append durante l'esecuzione dei trheads .. ma sono lontano anni luce dal farlo funzionare. ho provato ad usare la libreria gevent e con essa riesco a salvare la suddetta lista … ma mi introduce ulteriori dipendenze (su linux nn sono un problema, ma su osx richiede di installare la libreria event da sorgente (non ho trovato binary), per poi installare gevent usando easy_install) potete aiutarmi a comprendere come utilizzare la libreria thread in modo da restituirmi dei valori da salvare in un oggetto python (oin questo caso una lista di path) ? grazie mille per qualsiasi aiuto! Massimo. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python