3
我需要加载约100k文件与载体和聚合内容在一个numpy数组。这个过程大约需要3分钟,所以我想加快速度。我试图用gevent来加速它,但我无法获得任何加速。没有加速读取文件与gevent
我读到应该使用异步调用来加速IO调用而不是多处理。我进一步阅读gevent是推荐的图书馆。我写了一个例子来下载图片,我可以看到速度的巨大提高。这里是我的代码
def chunks(l, n):
""" Yield successive n-sized chunks from l.
"""
for i in xrange(0, len(l), n):
yield l[i:i+n]
file_paths = # list of filenames
numpy_array = numpy.ones([len(file_paths), file_size])
pool = gevent.pool.Pool(poolsize)
for i, list_file_path_tuples in enumerate(chunks(file_paths, CHUNK_SIZE)):
gevent_results = pool.map(numpy.load, list_file_path_tuples)
pool.join()
for i_chunk, result in enumerate(gevent_results):
index = i * CHUNK_SIZE + i_chunk
data = result['arr_0']
numpy_array[index] = data
使用块是必要的简化版本,否则我会所有的载体两次在内存中。
在我的代码中存在问题还是使用错误的方法?