保持python守护进程活着

时间:2013-11-09 13:14:46

标签: python daemon

我们开发了一些像unix守护进程一样运行的小型服务。

我们的第一个实施依赖于扭曲反应堆。 reactor实例是我们的工件,用于在子进程调用后保持OS进程保持活动并且不停地运行。

最近,我们删除了这些模块的Twisted依赖项,仍然需要在subprocess调用后保持进程运行。我们在“main()”方法的末尾添加了一个“while True: time.sleep(.1)”语句,它运行正常。

通过time.sleep(.1)电话,我们的表现是浪费表现,考虑到每分钟唤醒事件约600次。这对我们的应用程序性能不利。如果我们替换

while True:
    time.sleep(.1)

通过

while True:
    pass

它耗费了大量的CPU时间(连续不断地占i5的1.7%)。

有更好或平衡的替代解决方案,占用的CPU时间更短,并具有以下选项的响应性能?

reactor.run()

while True:
    time.sleep(.1)

我在stackoverflow和web上找到了一些类似的答案和讨论,但是考虑到python,我没有找到关于它的明确讨论。

1 个答案:

答案 0 :(得分:1)

也许解决方案就是简单地使用一个模块,这个模块将进入标准库。

https://pypi.python.org/pypi/python-daemon/

显然3143已被推迟,但pypi链接是为了实施pep。