【问题标题】:How use openurl & multiprocessing get URL different data in the same time?如何使用 openurl 和 multiprocessing 同时获取不同的 URL 数据?
【发布时间】:2011-05-12 07:35:25
【问题描述】:

这个循环帮助从网络服务获取一些文本数据:

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)

现在我尝试使用多处理同时获取不同的数据标题:

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()

我希望这可以做“http://url/abc.csv”的获取和保存; “http://url/def.csv”; “http://url/ghi.csv”,然后在time.sleep之后再做一次。但是它不起作用,或者在同一时间执行相同的过程,我犯了什么逻辑错误?

【问题讨论】:

  • 你顺便导入两次csv。
  • 谢谢,我看到 import csv 导入错误。:)
  • @Jeff:你的意思是粘贴原始源代码?
  • 是的。代码you pasted in 根本没有缩进。其他人为您添加了缩进(恕我直言,这不是正确的举动),但他们可能完全错误。

标签: python csv multiprocessing urlopen


【解决方案1】:

您的多进程实现只会抓取一次 url。 如果您希望您的数据获取一次又一次地做这些事情,那么您错过了While True

也许这样它会起作用:

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2017-12-06
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2020-06-06
    相关资源
    最近更新 更多