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

3

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

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

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

我特别关注的是,进程充当工作器并监听某些事件的情况(例如在任务队列上等待)。

其他方案的性能特征是什么?


你可以考虑使用asyncio:https://docs.python.org/3.4/library/asyncio.html - Simeon Visser
@simeonvisser,你可以详细解释一下为什么asyncio可能是合适的吗? - skyork
2个回答

1

"等待并处理作业"的先前技术已经有几种不同的方式:

  • 使用工作进程或线程(参见multiprocessingthreading以获取一些有用的基本操作)
  • 基于事件的处理(asyncio、twisted和其他一些库)。您的异步IO库会在STDIN或所选管道上收到数据时引发事件。
  • 使用IO缓冲的单线程。根据所需的负载特性,让工作进程只是等待IO并在IO可用时进行处理也是合理的。没有复杂的排队机制,只需让内核缓冲IO,并且在其变满时让调用进程阻塞。

0

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

"Celery是一个简单、灵活和可靠的分布式系统,可以处理大量的消息,并提供维护此类系统所需工具的操作。 它是一个任务队列,专注于实时处理,同时支持任务调度。"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接