bash - Gnu Parallel:是否为每个作业并行重新加载程序?
问题描述
假设我有一个程序在运行之前加载重要内容……但这是一次减速。
接下来,我写:
cat ... | parallel -j 8 --spreadstdin --block $sz ... ./mycode
这会导致每个作业的负载开销吗?
如果它确实引起了开销,有没有办法避免它?
解决方案
正如@Barmar 所说,./mycode
在您的示例中为每个块启动。
但是由于您没有-k
在示例中使用,因此您可以使用--round-robin
.
... | parallel -j 8 --spreadstdin --round-robin --block $sz ... ./mycode
这将开始 8./mycode
秒(但不是每个块一个),并为任何准备好读取的进程提供块。
此示例显示,由于 4 和 5 读取速度较慢,因此为进程 11 和 10 提供了比进程 4 和 5 更多的块:
seq 1000000 |
parallel -j8 --tag --roundrobin --pipe --block 1k 'pv -qL {}0000 | wc' ::: 11 4 5 6 9 8 7 10
推荐阅读
- javascript - 如何使这个 owlcarousel 正确显示项目?
- c# - READER IS CLOSED 时调用 read 的尝试无效 .. 错误在每一行重复
- node.js - 将另一个集合中的文档保存在新文档的数组中
- r - 根据 R 中表的列数过滤列表
- python-3.x - 在 termux 中安装 pynput 时出现错误
- c - 方案和C之间的混合编程
- async-await - 可以/如何调用描述符从条件和/或异步暂停方法/元类模板中受益
- http - http/net 请求不遵循 3xx 状态码
- c++ - 调用有时间限制的函数
- android - 电容器类星体“地理定位”插件未在 android 上实现