与多处理相关,threading.Timer()和time.sleep()在Python中的行为如何?

时间:2016-03-08 23:23:21

标签: python-2.7 sleep python-multiprocessing

我有一个包含多个集合的Mongo数据库,这些集合将计数值存储在来自高频数据源的数组中。这些集合都具有相同的架构。我试图以增量方式对这些计数值进行建模。例如,当我开始处理它时,集合中可能有200个计数值。我将逐步处理这个200元素数组,即前两个元素,前三个元素,前四个元素,依此类推。

由于我有不同的帐户,我使用多处理模块为每个集合创建一个单独的流程。我不能使用'线程' scipy模块不是线程安全的。由于原始数据源是流数据源,因此计数阵列的大小将会增加。为了能够连续处理这个不断增长的数组,我让每个进程都进入休眠状态,然后再次启动。我用过:

  1. threading.Timer()来做到这一点。然而,这不起作用,而不是进入睡眠状态,过程就会结束。
  2. time.sleep()将进程置于睡眠状态。但是,使用time.sleep(),在一段时间之后,输出的值将继续重复,这意味着数组在一段时间后仍未处理。
  3. 对于为什么会发生这种情况的任何帮助都非常感谢。

    编辑:我没有使用多线程进行并行化。我正在使用Python的多处理模块。每个进程都在不同的Mongo集合上运行,并且独立于另一个。

0 个答案:

没有答案