3
当我运行./MyProgram +RTS -N4
我希望我的程序能够自动检测到它在4个内核上运行,并创建4个火花来处理数据集。现在,每当我想改变这个选项时,我都会重新编译,这很烦人。是否有用于检测哪些RTS标志被设置的库?
当我运行./MyProgram +RTS -N4
我希望我的程序能够自动检测到它在4个内核上运行,并创建4个火花来处理数据集。现在,每当我想改变这个选项时,我都会重新编译,这很烦人。是否有用于检测哪些RTS标志被设置的库?
回答你原来的问题:运行选项是GHC特有的,有一个由GHC提供的模块,它可以让你看到完整的参数列表(包括+RTS
和-RTS
)传递给一个程序:GHC.Environment
。
这里是一个小示范:
import GHC.Environment (getFullArgs)
import System.Environment (getArgs)
main = do
getFullArgs >>= mapM putStrLn
putStrLn "=="
getArgs >>= mapM putStrLn
return()
编译程序作为ghc App.hs --make -rtsopts -threaded
将导致当被执行时执行以下操作:
./App hello +RTS -N4 -RTS ook ooks
hello
+RTS
-N4
-RTS
ook
ooks
==
hello
ook
ooks
如果对于如何表达选项的语法发生任何变化,此方法将会中断。 –
月['getNumCapabilities'](HTTP://hackage.haskell .org/packages/archive/base/latest/doc/html/Control-Concurrent.html#v:getNumCapabilities)是你想要的吗? –
@DanielFischer它是。谢谢。 –