GNU 并行作为作业队列处理器



我有一个工人.php文件如下

<?php
$data = $argv[1];
//then some time consuming $data processing

我使用 gnu 并行将其作为穷人的作业队列运行

while read LINE; do echo $LINE; done < very_big_file_10GB.txt  | parallel -u php worker.php 

当我在 4 CPU 机器上时,通过分叉 4 个 PHP 进程来工作。

但对我来说仍然感觉很同步,因为阅读 LINE 仍然一次读取一行。

由于它是 10GB 文件,我想知道我是否可以以某种方式使用并行通过将它分成 n 个部分来并行读取同一个文件(其中 n = 我的 cpu 数量(,这将使我的导入速度快 n 倍(理想情况下(。

无需做while业务:

parallel -u php worker.php :::: very_big_file_10GB.txt

-u取消分组输出。仅当您不打算使用输出时才使用它,因为不同作业的输出可能会混合。

::::文件输入源。相当于-a.

我认为您将受益于阅读"GNU Parallel 2018"的至少第2章(在15分钟内学习GNU Parallel(。您可以在以下位置购买 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html 或下载至: https://doi.org/10.5281/zenodo.1146014

相关内容

  • 没有找到相关文章

最新更新