Come utilizzare OpenUrl e Multiprocessing Ottieni URL diversi dati diversi allo stesso tempo?
-
12-11-2019 - |
Domanda
Questo loop aiuta a ottenere alcuni dati di testo dal servizio Web:
while True:
u = urllib2.urlopen('http://url/%d.csv' %inputd)
f=open('/folder/%s.csv' $inputd,'a')
csvread = csv.reader(u)
csvwrite = csv.writer(f)
csvwrite.writerows(csvread)
print 'OK','%e'%inputd
time.sleep(30)
Ora provo a ottenere un titolo dati diverso allo stesso tempo utilizzare il multiprocessing:
import multiprocessing as mp
import urllib2,csv,random,logging,csv,time
inputd=(abc,def,ghi)
def dataget():
u = urllib2.urlopen('http://url/%d.csv' %inputd)
f=open('/folder/%s.csv' $inputd,'a')
csvread = csv.reader(u)
csvwrite = csv.writer(f)
csvwrite.writerows(csvread)
print 'OK','%e' % inputd
time.sleep(30)
process=[]
for s in inputd:
p = mp.Process(target=dataget)
ps.append(p)
p.start()
Spero che questo possa fare l'ottenimento e il salvataggio di "http: //url/abc.csv"; "http: //url/def.csv"; "http: //url/ghi.csv" allo stesso tempo, quindi ri-di nuovo dopo time.sleep
. Ma non funziona o fa lo stesso processo allo stesso tempo, quale errore logico ho fatto?
Soluzione
La tua implementazione multiprocessa farà l'URL che afferrà solo una volta. Se vuoi che il tuo dataget faccia le cose ancora e ancora, ti sei perso il While True
.
Forse così funzionerà:
import multiprocessing as mp
import urllib2,csv,random,logging,csv,time
inputd=(abc,def,ghi)
def dataget(param):
while True:
u = urllib2.urlopen('http://url/%d.csv' %param)
f=open('/folder/%s.csv' %param,'a')
csvread = csv.reader(u)
csvwrite = csv.writer(f)
csvwrite.writerows(csvread)
print 'OK','%e'%param
time.sleep(30)
process=[]
for s in inputd:
p = mp.Process(target=dataget, args=(s,))
process.append(p)
p.start()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow