haskell中的并行映射
是否有一些替代
map
并行地评估列表?我不需要它懒惰。
类似的事情:pmap :: (a -> b) -> [a] -> [b]
让我pmap expensive_function big_list
并让我的核心都达到100%。
没有找到相关结果
已邀请:
2 个回复
舶啥戚
将通过
策略并行评估列表中的每个元素。请注意,如果您的元素太便宜而无法并行评估每个元素,那么使用具有良好块值的
可能会提供更好的性能(因为它可以节省每个元素的火花)。 编辑:基于你的问题,我觉得我应该解释为什么这是一个答案。这是因为Haskell很懒惰!考虑一下这句话
没有评估任何东西。你刚刚创建了一个映射
的thunk。那么我们如何并行评估呢?
现在不要在将来的计算中使用
列表,而是使用
列表。 IOW,你不需要一个平行地图,你可以使用常规(懒惰)地图和一个并行的评估策略。 编辑:如果你环顾四周,你会看到parMap函数,它执行我在这里展示但包装成一个辅助函数。 在回复您的评论时,以下代码不适合您吗?这个对我有用。
超可林
:
策略参数类似于
。 在par-monad包中也有
(你走出纯粹的Haskell,进入一个平行的monad):
这里记录了par-monad包。