多个工作程序脚本的模式,用于处理数据列表

时间:2010-11-03 02:37:00

标签: design-patterns

假设我有一个10,000行字符串的列表,需要由100个工作脚本处理。

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

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

如果一个工作脚本在一行上失败,它将跳过它并继续前进到另一个工作脚本当前没有处理的下一个可用行。

任何时候的工作脚本可能在未知的时间内不可用。

现在假设在第一个初始的100个工作脚本中,任何给定的工作脚本可能变得不可用(使用当前数据崩溃或花费太长时间),但在一段时间后将再次可用。它可能会再次变得不可用,并且可能需要很长时间才能在处理10,000行的过程中再次可用。

如何处理所有10,000行,其中最初的100个工作脚本同步运行,但其中任何一个可能变得不可用,并且在一些未知的随机时间之后,它可能再次可用以准备处理。

我会想象像为所有10,000行做一个循环,以及另一个脚本来定期轮询所有可用的工作者,并同步启动这些工作者。

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

1 个答案:

答案 0 :(得分:1)

producer/consumer pattern对于这种情况非常有帮助。我解释了一点over here

也就是说,如果您的情况真的那么简单,那么更简单的技术可能更合适,比如均匀地划分数据。

此外,我认为你不会期望看到100倍的加速,因为你的硬件肯定不支持...

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