该任务是使用子进程模块同时在日志文件上运行多个UNIX grep命令。同步运行这些grep命令非常耗时,因此希望将其并行化。
我想并行运行的Grep命令:
grep "start" /var/log/application/start.log.gz
grep "end" /var/log/application/end.log.gz
grep "proceed" /var/log/application/proceed.log.gz
我应该选择使用asyncio还是选择gevent?
Q:我应该选择使用
asyncio
还是选择gevents
?
嗯,两个都不好。
[如果确实有合理的动机同时启动这些任务,并且以最小的开销附加成本(正确的话,基于python进程的执行就要付出巨大的进程实例附加成本,其中python的副本解释器状态首先被重新创建(请阅读有关其他一致性风险的文档详细信息,为此,fork
实例化方法开始被认为对其允许的O / S不安全(在2020-Q1中并非全部))/
[最好尝试使用设计正确,智能且经过良好调整的工具gnu parallel
(最好从读取可配置的所有man parallel
职位提交选项的parallel
开始)
示例:
$ parallel --jobs 3 \
--halt now,fail=1 \
--joblog LastRUN.log \
grep {} /var/log/application/{}.log.gz ::: start proceed end