相关疑难解决方法(0)

使用F#代理映射Reduce

在玩F#代理后,我尝试使用它们来减少地图.

我使用的基本结构是:

  • 地图主管,它将在其状态下完成的所有工作排队,并接收来自地图工作人员的工作请求
  • reduce supervisor与map supervisor做同样的事情来减少工作量
  • 一堆地图并减少映射和减少的工人,如果一个工作失败,它会将其发送回相应的主管进行重新处理.

我想知道的问题是:

  • 与使用PSeq的更传统(但非常好)的地图减少(http://tomasp.net/blog/fsharp-parallel-aggregate.aspx)相比,这有什么意义吗?
  • 我实施地图和减少工人的方式看起来很难看是否有更好的方法?
  • 看来我可以创建一个1000万的地图工人和1000万减少工人lol,我应该如何选择这些数字,越多越好?

非常感谢,

type Agent<'T> = MailboxProcessor<'T>

//This is the response the supervisor
//gives to the worker request for work
type 'work SupervisorResponse =
| Work of 'work //a piece of work
| NoWork//no work left to do 

//This is the message to the supervisor
type 'work WorkMsg = 
| ToDo of 'work //piles up work in the Supervisor queue
| WorkReq of   AsyncReplyChannel<SupervisorResponse<'work>> //' 

//The supervisor agent can be interacted …
Run Code Online (Sandbox Code Playgroud)

f# mapreduce agents

13
推荐指数
1
解决办法
3005
查看次数

在远程邮箱处理器之间传递消息?

我正在使用MailboxProcessor类来保持独立的代理人做自己的事情.通常,代理可以在同一个进程中相互通信,但我希望代理在处于不同的进程或甚至不同的机器上时能够相互通信.什么样的机制最适合实现它们之间的通信?有一些标准的解决方案吗?

请注意,我正在使用Ubuntu实例来运行代理.

messaging f# agent mailboxprocessor

11
推荐指数
1
解决办法
698
查看次数

标签 统计

f# ×2

agent ×1

agents ×1

mailboxprocessor ×1

mapreduce ×1

messaging ×1