GNU Parallel 作为作业队列处理器
GNU Parallel as job queue processor
我有一个 worker.php 文件如下
<?php
$data = $argv[1];
//then some time consuming $data processing
我运行这是一个使用gnu parallel
的穷人的工作队列
while read LINE; do echo $LINE; done < very_big_file_10GB.txt | parallel -u php worker.php
当我在 4 cpu 台机器上时,通过分叉 4 php 个进程可以实现哪种工作方式。
但对我来说仍然感觉很同步,因为 read LINE 仍然是一次读取一行。
因为它是 10GB 的文件,我想知道我是否可以通过将同一个文件分成 n 个部分(其中 n = 我的 cpus 的数量)以某种方式并行读取同一个文件,这将让我的导入速度快 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
我有一个 worker.php 文件如下
<?php
$data = $argv[1];
//then some time consuming $data processing
我运行这是一个使用gnu parallel
的穷人的工作队列while read LINE; do echo $LINE; done < very_big_file_10GB.txt | parallel -u php worker.php
当我在 4 cpu 台机器上时,通过分叉 4 php 个进程可以实现哪种工作方式。
但对我来说仍然感觉很同步,因为 read LINE 仍然是一次读取一行。
因为它是 10GB 的文件,我想知道我是否可以通过将同一个文件分成 n 个部分(其中 n = 我的 cpus 的数量)以某种方式并行读取同一个文件,这将让我的导入速度快 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