首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shellscript中,如何使用多核?

在shellscript中,如何使用多核?
EN

Stack Overflow用户
提问于 2018-04-13 23:51:27
回答 1查看 2.8K关注 0票数 0

我运行一个非常简单的shell脚本,对我每天下载的文件执行一些转换。通常,它是一个包含六个文件的zip归档文件,在将内容插入数据库之前,我会分五个不同的步骤对其进行处理。第一步需要5-8分钟/个文件,并且受到CPU的限制。

我有两台执行此任务的计算机,一台有两个核心,另一台有四个核心和超线程。由于第一步在我当前的设置中需要几分钟的30+时间,所以我想将其多线程。

第一步基本上是

代码语言:javascript
复制
for file in *.txt
        dosomething "$file" "$file.csv"
done

在我的2核计算机上,我想并行处理两个文件,在我的8线程机器上,我想并行处理所有6个文件(如果归档包含9个文件的那一天能很好地处理,那就太好了)。所有文件都必须在下一步之前处理(这要快得多)。

如何启动适当数量的线程/进程,然后在前一步完全完成后才开始执行下一步?

EN

回答 1

Stack Overflow用户

发布于 2018-04-14 00:14:39

Shell脚本不是进行作业分发的好地方。从根本上说,它们只是调用一系列程序,这些程序本身可能使用也可能不使用多个内核。

您仍然可以通过在后台运行作业(将&放在命令后面)来实现一定程度的并行性。这允许您的脚本继续执行它想要做的任何事情,同时特定的命令继续在后台运行。之后运行wait命令会强制脚本等待所有后台作业完成后再继续执行。

您还可以将各个命令的PID存储在数组中,并专门等待这些PID。See this answer获取有关如何正确执行此操作的更多详细信息。

对于您的用例,您可以检查可用内核的数量,并在后台/等待那么多进程完成。您可以通过cores /proc/cpuinfo:cat /proc/cpuinfo | grep -c processor检查您有多少个内核

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49820887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档