用于创建长时间运行的进程的机制



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

常见的模式似乎是这样的:

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

我对进程充当侦听某些事件(例如等待任务队列)的工作线程的场景特别感兴趣。

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

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

  • 工作进程或线程(有关一些有用的基元,请参阅multiprocessingthreading
  • 基于事件的处理(异步、扭曲和其他一些)。异步 IO 库在获取有关 STDIN 或所选任何管道的数据时引发事件。
  • 使用 IO 缓冲区的单线程。根据所需的负载特征,工作进程只等待 IO 并在 IO 到来时对其进行处理可能是合理的。没有花哨的排队。只需让内核在 IO 和调用进程块已满时缓冲它。

如果您预计许多长时间运行的任务(并在更多机器上扩展)需要性能,那么像 Celery 这样更高级的系统可能适合:

"芹菜是一个简单、灵活和可靠的分布式系统,可以 处理大量消息,同时提供 维护此类系统所需的工具。这是一个具有焦点的任务队列 实时处理,同时还支持任务调度。

相关内容

  • 没有找到相关文章

最新更新