我有一个运行cherrypy服务器的python脚本。当我按下CTRL+C时,它会停止服务器,但不会停止脚本中的函数。该功能将继续打印传感器值,无论我按CTRL+C多少次,都无法停止。如何确保CTRL+C可以停止所有操作(服务器和功能)?
这是我的完整脚本:http://pastebin.com/yKLt3mJN
这就是我要停止的功能:
@cherrypy.expose
def sensor(self):
import RPi.GPIO as GPIO, time, os
DEBUG = 1
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
def RCtime (RCpin):
reading = 0
GPIO.setup(RCpin, GPIO.OUT)
GPIO.output(RCpin, GPIO.LOW)
time.sleep(1)
GPIO.setup(RCpin, GPIO.IN)
# This takes about 1 millisecond per loop cycle
while (GPIO.input(RCpin) == GPIO.LOW):
reading += 1
return reading
while True:
sensorvalue= RCtime(12)
if sensorvalue > 1000:
print "switch on light"
GPIO.output(11, True) #switch on
lightstate ="On"
time.sleep(1)
else:
print "switch off light"
GPIO.output(11, False) #switch off
lightstate ="Off"
time.sleep(1)
print sensorvalue # Read RC timing using BCM pin #18, physical pin 12
return lightstate
如果我单独运行这个函数,我可以停止它。
^CTraceback (most recent call last):
File "RCtime.py", line 25, in <module>
print RCtime(18) # Read RC timing using pin #18
File "RCtime.py", line 16, in RCtime
time.sleep(0.1)
keyboardInterrupt
您可以尝试使用以下方法来查找服务器的进程id,尽管这不应该一直停止脚本
然后
kill -15 <pid>
。您需要在Python中捕获Ctrl+C,以便可以正确终止程序并使用exit(0)或exit(1)安全退出。
注意:
退出(0)表示无任何错误/问题的干净退出
退出(1)意味着出现了一些问题/错误/问题,这就是程序退出的原因。
例如
相关问题 更多 >
编程相关推荐