Come utilizzare OpenUrl e Multiprocessing Ottieni URL diversi dati diversi allo stesso tempo?

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

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?

È stato utile?

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
scroll top