[英]Python How to keep child process alive even after parent process dies..?
[英]How to keep python process alive - the right way
我经常看到这个问题,但对答案不满意。 我知道像Django和Flask / Werkzeug这样的服务器程序都有startserver / run方法,该方法可以使进程保持活动状态,直到收到停止信号为止。
我想实现类似的功能,但是我不知道该怎么做。 我认为永恒循环是一种不好的方法,因为它浪费了处理时间。 我宁愿不使用第三方库。
我的程序必须保持活动状态才能等待回调,与服务器通信,监视其内部状态等。
伪代码:
import ...
class Main():
def __init__():
self.sensors = sensors.register()
self.database = remote.connect()
self.running = True
def start():
""" this is what I assume is bad """
while self.running:
pass
def stop():
self.running = False
self.cleanup()
def cleanup():
self.database.disconnect()
self.sensors.unregister()
有一个不特定于python的通用范例来处理这种情况,称为事件循环。 如果在Internet上搜索它,将会发现几个实现它的库。 如果您使用asyncio
,则它不需要python3附带的第三方库。 我建议您熟悉一下这个概念,网络上有很多例子。 参见本教程。 我们从那里得到这个例子:
import asyncio
async def work():
while True:
await asyncio.sleep(1)
print("Task Executed")
loop = asyncio.get_event_loop()
try:
asyncio.ensure_future(work())
loop.run_forever()
except KeyboardInterrupt:
pass
finally:
print("Closing Loop")
loop.close()
我希望这有帮助。
你可以:
import time
time.sleep(x) #seconds
并且仅以所需的时间间隔检查状态。
对于网络事件,可以使用套接字。 https://python-socketio.readthedocs.io/en/latest/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.