仅适用于dev环境的Python应用程序多线程

时间:2014-08-21 16:16:50

标签: python multithreading python-multithreading

我正在开发一个包含两个组件的Python / Bottle应用程序:

  • 接收消息并将其丢弃在队列上的REST端点(在Redis中)
  • 一个'worker',它是一个无限循环,用于轮询消息并处理它们

在生产中,这两个将在不同的进程中运行,但我想在本地运行以进行开发时在同一进程中运行它们。

线程似乎是一个明显的答案,但在单独的进程中运行组件时,线程是不必要的。

只有在同一个流程中运行两个组件时,是否有一种优雅的方式可选择采用线程方法?

1 个答案:

答案 0 :(得分:1)

这应该不是问题,因为它听起来像是完全孤立的。我只想添加一个导入线程的新脚本,然后将其他启动脚本包装在函数中,或调用它们与新线程一起使用的函数。

这是一个简单的例子:

import threading

def script1():
    import script1
def script2():
    import script2

t1 = threading.Thread(target=script1)
t2 = threading.Thread(target=script2)
t1.start()
t2.start()
t1.join()
t2.join()

这将在脚本的脚本主要部分中启动任何内容,更理想情况下,如果脚本具有您可以在线程中运行的实际主要功能。

有几点需要注意:

  • 如果他们正在处理任何单身人士或全球人,他们最终可能会互相打屁股。
  • 此外,由于python具有GIL,因此它们可能无法以快速运行和/或具有与生产中的脚本不同的时序。
  • 解决这两个问题的方法可能是使用多处理模块,它们不会在同一个进程中,但它们可以同时从同一个脚本运行。