我正在尝试探索受 CPU 限制的算法在使用 Clojure 扩展到多个 CPU 时的行为。该算法以连续整数的大序列作为输入,将序列划分为给定数量的子序列,然后使用 map 将函数应用于每个子序列。一旦 map 函数完成,reduce 用于收集结果。
完整代码可在Github上找到,但这里有一个示例:
(map computation-function (partitioning-function number-of-partitions input))
当我在具有十二个内核的机器上执行此代码时,我看到大部分内核都在使用,而我希望只看到一个内核在使用中。
理想情况下,我想pmap
使用给定数量的线程,但我无法使代码仅使用一个线程执行。
那么 Clojure 是否将计算分散到多个 CPU 上?如果是这样,我能做些什么来控制这种行为吗?