Comment utiliser openurl et de multitraitement obtenir l'URL de données différentes en même temps?

StackOverflow https://stackoverflow.com/questions/5974785

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?

Était-ce utile?

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top