我们开发了一些像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,我没有找到关于它的明确讨论。
答案 0 :(得分:1)
也许解决方案就是简单地使用一个模块,这个模块将进入标准库。
https://pypi.python.org/pypi/python-daemon/
显然3143已被推迟,但pypi链接是为了实施pep。