我正在尝试从两个网站下载多个图像文件,并且正在使用多处理模块进行操作,希望缩短所需的时间(同步时间约为五分钟)。这是在单独的过程中执行的代码:
def _get_image(self):
if not os.path.isdir(self.file_path + self.folder):
os.makedirs(self.file_path + self.folder)
rand = Random()
rand_num = rand.randint(0, sys.maxint)
self.url += str(rand_num)
opener = urllib.FancyURLopener()
opener.retrieve(self.url, self.file_path + self.folder + '/' + str(rand_num) + '.jpg')
上面的代码在不同的进程中执行并且工作正常,但我希望它不是在下载后立即保存每个文件,而是在流程执行结束时。下载后,我希望它们存储在一些内部列表或dict中......可悲的是,FancyURLopener不允许将文件存储在内存中,并坚持在下载后立即将它们写入磁盘。是否有像FancyURLopener这样的工具,但没有磁盘写入?
答案 0 :(得分:1)
URLopener.open()
返回类似文件。您可以read()
将其作为字节字符串检索数据,然后将其存储在任何您想要的位置。
为什么首先需要URLopener
?如何简单urllib2.urlopen()
?