2010-11-03 34 views
0

假设我有一个需要由100个工作者脚本处理的10000行字符串列表。多个工作者脚本处理数据列表的模式

我希望尽可能多的100个脚本同步运行。

一旦一个工作脚本完成一行,它应该处理下一个可用的行,当前没有被另一个工作脚本处理。

如果工人脚本在线路出现故障时,它会跳过它并移动到当前没有被另一个工人脚本处理的下一个可用的线路。

工作人员脚本在任何时候都可能无法使用未知的时间。

现在假设出了第一初始100工人脚本,任何给定的工人脚本可能不可用(或崩溃或服用时间过长与当前数据),但一段时间下来以后的路再次变为可用。它可能再次变得不可用,并且可能花费太长时间才能在处理10,000行的时间内再次变得可用。

如何处理所有的10000行与最初的100个工人脚本同步运行,但其中任何一个可能变得不可用和一些未知的随机时间后,它可能再次变为可用准备处理。

我会想象像这样一个循环的所有10000行,而另一个脚本,周期性轮询所有可用的工人,并同步推出这些工人。

我不确定我会如何处理这个问题。

回答

1

producer/consumer pattern对于这样的情况很有帮助。我再解释一下over here。也就是说,如果你的情况真的那么直截了当,简单的技术可能更合适,比如平均分配数据。

而且,我认为你不希望看到100倍的加速为您的硬件肯定会不支持?

当然,如果我已经完全误解,你真正要处理的每个字符串100x(即每个脚本做了不同的事情),然后请澄清。