当我运行./MyProgram +RTS -N4
时,我希望程序自动检测它是否在4个内核上运行,并创建4个火花来处理数据集。现在,每次要更改此选项时,我都会重新编译,这很烦人。
最佳答案
回答您的原始问题:运行时选项特定于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
关于haskell - 是否有一个用于检测设置哪些RTS标志的库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12737621/