我在磁盘上有很多HDF5文件(通过gzip压缩,因此读取是CPU密集型的,每个文件包含大约80MB数据,需要大约300ms才能加载) 并希望使用多进程将数据加载到内存中。我使用多进程加载文件并将其推入队列,同时主进程从队列中读取数据。
主要流程:
/users/{uid}/avatar
结果(process_num = 1)是:
/groups/{gid}/avatar
对于每个步骤,消费者比生产者花费更多时间,但平均时间相等。 将process_num设置为2我得到了:
/avatar/{avatar-id}
当生产者进程终止时,消费者进程(主进程)仍然需要270ms才能从data_queue获取数据,因为数据大小很大(每个文件80MB),可能会浪费内存副本(写入和读取管道)的时间。
有没有更有效的方法来解决问题?