joblib和将结果写入dis

2024-04-29 07:13:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个并行计算的程序,并在每次计算完成后将结果写入h5文件,因为总结果可能太大,无法放入内存

我现在的设计方法如下:

  1. 主进程将X个作业的所有输入写入队列
  2. 使用multiprocessing生成N个进程作为工作进程
  3. 每个worker从输入队列中提取一个作业,计算结果并将其写入输出队列
  4. 主进程连续检查输出队列,当发现结果时,将其写入h5文件。一旦它收集了X个结果(和作业一样多),它就会终止进程并完成

我认为这将是相当有效的,但我看到,如果我使用joblib,而不是它的工作速度至少快5倍。我知道有大量的数据传输,因为程序需要序列化包含许多numpy数组的python对象,joblib对此进行了优化

因此,我想知道是否有可能在主进程将所有结果写入磁盘时,将joblibloky后端一起使用,以避免结果填满内存


Tags: 文件方法内存程序numpy序列化队列进程