gpt4 book ai didi

python - 来自 Linux 上的命令队列的并行处理(bash、python、ruby ......随便)

转载 作者:IT老高 更新时间:2023-10-28 21:32:09 29 4
gpt4 key购买 nike

我有一个包含 200 个命令的列表/队列,我需要在 Linux 服务器上的 shell 中运行这些命令。

我只想一次最多运行 10 个进程(从队列中)。有些过程需要几秒钟才能完成,而其他过程则需要更长的时间。

当一个进程完成时,我希望下一个命令从队列中“弹出”并执行。

有人有解决这个问题的代码吗?

进一步阐述:

有 200 件工作需要完成,排在某种队列中。我希望一次最多进行 10 件工作。当一个线程完成一项工作时,它应该向队列询问下一项工作。如果队列中没有更多的工作,线程应该死掉。当所有线程都死掉时,就意味着所有的工作都已经完成了。

我要解决的实际问题是使用 imapsync 将 200 个邮箱从旧邮件服务器同步到新邮件服务器。有些用户的邮箱很大,需要很长时间才能同步,有些用户的邮箱很小,同步很快。

最佳答案

在 shell 上,xargs 可用于对并行命令处理进行排队。例如,总是有 3 个并行 sleep ,每个 sleep 1 秒,总共执行 10 个 sleep 。

echo {1..10} | xargs -d ' ' -n1 -P3 sh -c 'sleep 1s' _

它总共会休眠 4 秒。如果您有一个名称列表,并且想将名称传递给执行的命令,再次并行执行 3 个命令,请执行

cat names | xargs -n1 -P3 process_name

会执行命令process_name aliceprocess_name bob等。

关于python - 来自 Linux 上的命令队列的并行处理(bash、python、ruby ......随便),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463963/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com