python多处理(使用pytable)错过了最终输出中队列的一些结果

时间:2017-07-03 10:19:26

标签: python queue multiprocessing pytables

在我陈述我的问题之前,让我提出我的约束 - 我不能发布代码,因为它与我的工作有关,他们不允许。所以这只是一个调查查询,看看有人看到过类似的问题。

我有一个python多处理设置,其中工作人员完成工作并将结果放入队列中。然后,特殊的编写器工作程序会累积队列中的结果。这些结果都是简单的熊猫系列。累加器将结果放入pandas数据帧并将其写入磁盘上的pytable。

问题在于我随机发现数据框中有时会遗漏一些结果,例如:在268个预期的列中,我将获得267.在过去三个月中,这已发生在80次中的大约10次。解决方法是 - 只需重新运行代码(这意味着重新计算所有内容),它第二次100%工作。我已经确保计算中没有错误,所以我的猜测是它与多处理或pytable数据写入有关。

任何提示都表示赞赏。很抱歉无法输入代码。

1 个答案:

答案 0 :(得分:0)

没有代码,很难帮助你。但我想如果你想找到" thin"在代码中你必须写下它的日志。

据我了解,您的工作人员的一次迭代必须创建268系列,这些系列在最终数据框中作为列。如果这些系列的形状相同,那么似乎是queue-worker中的问题 - 你必须在所有步骤中记录它。