我尝试使用examples文件夹中提供的assemble_data.py
下载Flickr样式数据集。但是,每当我运行此python崩溃时出现错误' python意外退出'。
它似乎与多处理和urllib有关。当我用单线程循环替换pool.map
时它可以工作但速度很慢。此外,如果我运行多处理但删除urlretrieve
,它似乎也可以工作。
答案 0 :(得分:1)
在这里回答我自己的问题......我通过使用urllib3来解决这个问题。
http = urllib3.PoolManager(10)
def download_image(args_tuple):
"For use with multiprocessing map. Returns filename on fail."
url, filename = args_tuple
try:
if not os.path.exists(filename):
print url + ' -> ' + filename
# Dont redirect.
response = http.request('GET', url, redirect=False)
with open(filename, 'wb') as f:
f.write(response.data)
with open(filename) as f:
assert hashlib.sha1(f.read()).hexdigest() != MISSING_IMAGE_SHA1
test_read_image = io.imread(filename)
return True
except KeyboardInterrupt:
raise Exception() # multiprocessing doesn't catch keyboard exceptions
except:
os.remove(filename)
return False
要点here。