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

Python 2.7 threading.Timer()和time.sleep()在Python中与多处理相关的行为如何?,python-2.7,sleep,python-multiprocessing,Python 2.7,Sleep,Python Multiprocessing,我有一个Mongo数据库,其中包含多个集合,这些集合将高频数据源的计数值存储在一个数组中。这些集合都具有相同的模式。我试图以一种递增的方式对这些计数值进行建模。例如,当我开始处理一个集合时,该集合中可能有200个计数值。我将以增量方式处理这个200个元素的数组,即前两个元素、前三个元素、前四个元素,依此类推 因为我有不同的帐户,所以我使用多处理模块为每个集合创建一个单独的进程。我不能使用“线程”模块,因为scipy不是线程安全的。由于原始数据源是流式数据源,因此计数数组的大小将不断增加。为了能够

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

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

  • threading.Timer()执行此操作。然而,这并没有起到作用,因为这一过程只会结束,而不是进入睡眠状态
  • time.sleep()将进程置于睡眠状态。但是,对于time.sleep(),在一个时间点之后,输出的值会不断重复,这意味着数组在一段时间后不会被处理
  • 非常感谢您对为什么会发生这种情况的任何帮助


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

    您的输入流是什么?您不应该让线程处于休眠状态,让它们等待输入流,而将线程管理留给操作系统<代码>我不能使用“线程”模块,因为scipy不是线程安全的为什么不?如果在线程之间不共享任何内容,则不必关心线程安全。@xvan:我不直接访问输入流。我访问的只是一个MongoDB数据库。我不能使用线程,因为尽管线程不共享任何数据,但scipy库不是线程安全的。请参阅以下问题: