代码之家  ›  专栏  ›  技术社区  ›  Michael Barker

我如何才能在Ant中获得可用处理器的数量

  •  3
  • Michael Barker  · 技术社区  · 16 年前

    我想从Ant构建脚本(即从runtime.get runtime().availableprocessors()返回的值)中获取可用处理器的数量。是否存在包含此值的现有属性,或者是否必须编写自定义Ant任务?

    5 回复  |  直到 7 年前
        1
  •  2
  •   dfa    16 年前

    write your custom ant task ,和编写类一样简单

        2
  •  3
  •   Tobber    10 年前

    This post by Ilia Chemodanov 很好地解释了两个解决方案。

    如果您不想编译和导入Java类,则可以 用纯蚂蚁做: (虽然很粗糙)

    <target name="get-cores">
        <property environment="env"/>
        <!-- support for Windows -->
        <condition property="cores.count" value="${env.NUMBER_OF_PROCESSORS}">
            <os family="windows" />
        </condition>
        <!-- support for Linux and Solaris (package SUNWgnu-coreutils is required) -->
        <exec executable="nproc" outputproperty="cores.count" os="Linux,SunOS,Solaris">
            <arg value="--all"/>
        </exec>
        <!-- support for Mac OS X -->
        <exec executable="sysctl" outputproperty="cores.count" os="Mac OS X">
            <arg value="-n"/>
            <arg value="hw.ncpu"/>
        </exec>
        <echo message="Number of cores: ${cores.count}"/>
    </target>
    
        3
  •  0
  •   Mark    16 年前

    JVM不提供这样的属性,Ant也不提供。您可以执行以下操作之一,而不是编写自定义任务:

    1. 编写一个Java类,将处理器的数量打印到标准输出。使用具有OutPufStand属性的Java任务将值设置为在Ant中使用的属性。
    2. 如果您只构建一个平台,请使用exec任务调用本机的某个内容,该内容将处理器数量打印到标准输出。如上所述,使用outputproperty属性将值设置为要在Ant中使用的属性。
        4
  •  0
  •   Cacho Santa    7 年前

    就像前面提到的@dfa,写下 own custom task 这是个不错的选择。

    但是,如果构建您的服务的主机与运行它的主机不同,那么核心的数量将不同(您将获得构建您的服务的主机的可用处理器的数量)。

    如果您不想这样做,那么您可以在构建脚本中使用一个小的shell脚本,类似这样的脚本(对于unix-like-oss):

    $(/usr/bin/nproc --all)
    

    我先检查命令是否存在, if(type /usr/bin/nproc) …但这取决于您希望如何实现它。

        5
  •  -1
  •   Manuel Selva    16 年前

    我从来没有听说过这样的财产,所以我认为你应该写你的定制任务。

    马努