使用multiprossing和Queue处理大型numpy数组的文件

时间:2017-09-20 08:27:44

标签: python queue multiprocessing

我在磁盘上有很多HDF5文件(通过gzip压缩,因此读取是CPU密集型的,每个文件包含大约80MB数据,需要大约300ms才能加载)  并希望使用多进程将数据加载到内存中。我使用多进程加载文件并将其推入队列,同时主进程从队列中读取数据。

主要流程:

/users/{uid}/avatar

结果(process_num = 1)是:

/groups/{gid}/avatar

对于每个步骤,消费者比生产者花费更多时间,但平均时间相等。 将process_num设置为2我得到了:

/avatar/{avatar-id}

当生产者进程终止时,消费者进程(主进程)仍然需要270ms才能从data_queue获取数据,因为数据大小很大(每个文件80MB),可能会浪费内存副本(写入和读取管道)的时间。

有没有更有效的方法来解决问题?

0 个答案:

没有答案