创建长期运行流程的机制

时间:2015-06-14 00:03:27

标签: python python-3.x task-queue blockingqueue long-running-processes

除了运行无限循环外,是否有其他机制可用于创建长时间运行的进程?

常见的模式似乎是这样:

while True:
    # Check for some condition or waiting for some event
    # Do some processing
    time.sleep(0.01)

我特别感兴趣的是这个过程充当监听某个事件的工作者的情况(例如,在任务队列上等待)。

替代方法的性能特征是什么?

2 个答案:

答案 0 :(得分:1)

关于“等待和处理工作”的现有技术已经通过几种不同的方式完成:

  • 工作流程或线程(有关一些有用的原语,请参阅multiprocessingthreading
  • 基于事件的处理(asyncio,twisted和其他一些)。当您在STDIN或您选择的任何管道上获取数据时,您的异步IO库会引发事件。
  • 带IO缓冲区的单线程。根据您所需的负载特性,工作进程可以合理地等待IO并在它到来时进行处理。没有花哨的排队。只需让内核缓冲IO和调用进程块就可以了。

答案 1 :(得分:0)

如果您预计需要为许多长时间运行的任务(以及扩展到更多计算机)的性能,那么可以使用更高级别的系统Celery

  

“Celery是一个简单,灵活,可靠的分布式系统   处理大量的消息,同时提供操作   维护这种系统所需的工具。 这是一个有焦点的任务队列   在实时处理上,同时也支持任务调度。