使用无限循环进行网络连接是否被认为是一种良好的编程习惯?
例子:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
我想以一种有效的方式实现这一点,例如注册一个事件并使程序进入睡眠状态。我正在寻找一种类似于在 Linux 中处理信号的实现。
我的目标语言是 C、Python 和 Java。
使用无限循环进行网络连接是否被认为是一种良好的编程习惯?
例子:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
我想以一种有效的方式实现这一点,例如注册一个事件并使程序进入睡眠状态。我正在寻找一种类似于在 Linux 中处理信号的实现。
我的目标语言是 C、Python 和 Java。
无限循环几乎总是不好的。你想要的是一个无限循环,以一种优雅的方式退出。
试试这种方法,用 Python 说明,但你也可以在其他语言中找到等效的方法:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import atexit
PID = os.getpid()
@atexit.register
def clean_shut():
LOGGER.debug("Clean shut performed")
try:
os.unlink("module_name.%d" % PID)
except:
pass
def main():
f = open("module_name.%d" % PID, "w")
f.write("Delete this file to shut module_name cleanly")
f.close()
conn = getConnection()
while os.path.exists("module_name.%d" % PID):
conn = getConnection()
# do something
if __name__ == '__main__':
main()
为了优雅地退出循环(如果您选择这样做),请删除生成的module_name.%PID
文件以完成最近的迭代,这样您就不会丢失任何数据或破坏每次迭代的工作流程。