python中的多处理/多线程下载文件

时间:2016-03-20 04:24:48

标签: python multithreading multiprocessing

我有一个csv文件,其中包含我希望从雅虎财经中提取的符号列表。 (约3000人)

df = pandas.read_csv('ticker_file.csv')
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime.today()

for each_code in df['Symbol']:  # got it from pandas website "Remote Data Access"
    get_prices = web.DataReader(each_code, 'yahoo', start, end)
    get_prices.to_csv(each_code + '.csv')

拉一个symbol并将其保存到csv大约需要2.5到3秒。

我想知道,使用多处理/超线程来加快这个过程是否可能/更快?

1 个答案:

答案 0 :(得分:1)

您可以非常轻松地使用多处理工作池。看一下https://docs.python.org/2/library/multiprocessing.html和给出的第一个例子(使用5个工作池)。它看起来像这样:

def f(each_code):
    start = datetime.datetime(2010, 1, 1)
    end = datetime.datetime.today()
    get_prices = web.DataReader(each_code, 'yahoo', start, end)
    get_prices.to_csv(each_code + '.csv')

p = Pool(20)
p.map(f, df['Symbol'])

不能说是否会加快速度。只要网站没有抱怨,它很可能会发生。