【发布时间】:2017-01-23 15:02:18
【问题描述】:
我是 python 新手。目前,我正在尝试实现一个程序来从远程服务器(http/https)下载大量文件。没有。的文件很大(> 1000)。为了处理这个问题,我需要以某种方式实现代码,以便它能够以有效和优化的方式利用操作系统资源。我采取的处理方式是多处理。
这里是我的实现:
import urllib,urlparse
import urllib2
import os
import multiprocessing
from multiprocessing.dummy import Pool as ThreadPool
from itertools import repeat
def download_file((url, d_dir)) :
#logger.debug('Download URL -> ' + url)
try :
with open(d_dir + os.sep + urlparse.urlparse(url).path, 'wb') as tfile :
tfile.write(urllib2.urlopen(url).read())
except :
logger.error('There was a some problem while downloading file, ' + url)
def create_pool(d_links, d_dir) :
pool = multiprocessing.Pool(processes=10)
pool.map(download_file, zip(d_links, repeat(d_dir)))
def extract_urls() :
# some logic to extract urls from files
links = {‘url1’, ‘url2’, ‘url3’, ‘url4’, ‘url5’, …}
#created process pool
create_pool(links, l_dir)
如果我运行这段代码,它会给我正常的输出。但我认为我没有正确实现多处理。您能否提供一些意见来优化这段代码?
提前致谢。
问候, 灰烬
【问题讨论】:
标签: python python-2.7 python-multiprocessing download