如果我在Linux或Mac上运行R,则可以使用multicore:::detectCores()
检测可用内核的数量。 但是,没有Windows版本的多核function,所以我不能在Windows上使用这种技术。
如何以编程方式检测R机器上的Windows机器上的内核数量?
并行程序包现在具有检测核心数量的功能: parallel:::detectCores()
。
这个线程有很多建议,包括:
Sys.getenv('NUMBER_OF_PROCESSORS')
还要注意Ripley教授在这个帖子中的发言,他谈到了这样做的困难。
如果实际需要区分实际的内核,芯片和逻辑处理器, 则要调用的API是GetLogicalProcessInformation
GetSystemInfo如果只想知道一台机器上有多少个逻辑处理器(没有超线程的区分)。
你如何从“R”中调用这个函数超出了我的想象。 但我猜R有一个从本机Windows DLL调用代码的工具。
GetSystemInfo会给你一个“处理器”数目的结构,它对应于核心的总数。
从理论上讲,它与在另一个答案中推荐的环境变量的值相同,但用户可以篡改(或删除)环境变量。 这可能是一个错误或功能取决于你的意图。