linux - 在 Ubuntu 上并行化进程

标签 linux ubuntu parallel-processing xargs

我想并行运行一些进程,我想做一个例子:

php scan.php 1.pdf > 1.txt & php scan.php 2.pdf > 2.txt & php scan.php 3.pdf > 3.txt

但问题是在目录中列出文件(如 1.pdf、2.pdf...)时自动调用它。

如果我用

find inprogress-gp/ -type f -name '*.pdf' -exec basename {} \; | xargs -n1 php scan.php

然后我可以打电话

php scan.php 1.pdf
php scan.php 2.pdf
php scan.php 3.pdf
....

知道如何解决这个任务吗?

最佳答案

如果您对 GNU Parallel 答案持开放态度:

parallel 'php scan.php {} > {.}.txt' ::: *.pdf

或者,如果您的 PDF 文件位于子目录中:

find . -name \*.pdf | parallel 'php {} > {.}.txt'

以下演示作业会在有可用作业槽的情况下立即启动,因此,仅使用 2 个内核,它会执行 10 秒 sleep 和 5 次每次 2 秒的进一步 sleep ,全部在 10 秒内完成:

parallel --line-buffer -j 2 'echo Job {#} starting; sleep {}; echo Job {#} done' ::: 10 2 2 2 2 2
Job 1 starting
Job 2 starting
Job 2 done
Job 3 starting
Job 3 done
Job 4 starting
Job 4 done
Job 5 starting
Job 5 done
Job 6 starting
Job 1 done
Job 6 done

关于linux - 在 Ubuntu 上并行化进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308718/

相关文章:

c++ - 运行时不同的执行策略

c++ - Gnome 平台上的基础开发

Ubuntu/etc/rc.local 没有 sudo 就无法运行

linux - 在 linux 中对发送到 CPU 的两个信号使用react

linux - 从文件名中提取版本号

c++ - 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中的错误

python - 在Python中并行迭代单个列表

c++ - 如果在并行部分执行会抛出错误吗?

JAVA可以在linux平台调用.so文件吗?

python - sdist/bdist_wheel 在 Linux 中不包含 pyc,但在 Windows 中包含