Comment utiliser openurl et de multitraitement obtenir l'URL de données différentes en même temps?
-
12-11-2019 - |
Question
Cette boucle aider à obtenir certaines données de texte à partir du web service:
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)
maintenant, j'essaie d'obtenir des données différentes de titre dans le même temps, l'utilisation de multitraitement:
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()
J'espère que cela peut faire l'obtenir et l'enregistrement de "http://url/abc.csv";"http://url/def.csv";"http://url/ghi.csv" en même temps, puis re-faire à nouveau après time.sleep
.Mais ça ne fonctionne pas, ou ne même processus que dans le même temps, ce que la logique de l'erreur ai-je faire?
La solution
Votre multi process de mise en œuvre fera l'url saisissant qu'une seule fois.Si vous voulez que votre dataget faire les choses encore et encore, vous avez raté l' While True
.
Peut-être que comme cela, il va fonctionner :
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()