我有一个python程序,需要几分钟才能完成。我有一些调试代码,只有在设置变量时才打印。在我当前的实现中通过命令行或环境变量设置变量。我想在程序执行时动态启用/禁用调试。
例如,请考虑以下代码:
import time
import os
debugging=False
if "DEBUG" in os.environ:
debugging = True
def debug():
if debugging:
print("debug statement");
def enable_debugging():
global debugging
debugging = True
def disable_debugging():
global debugging
debugging = False
print("1")
debug()
time.sleep(20)
print("2")
debug()
因此,当程序执行并关闭调试时,如何在程序执行时动态启用调试?换句话说,当输入特定字符串时,如何执行函数enable_debugging
(可能在单独的线程中)?
答案 0 :(得分:3)
使用线程模块进行一些实验后,以下代码适用于我。 侦听器线程一直在监听stdin。
import time
import os
import thread
import sys
debugging=False
def check_input():
print("Starting listener thread.")
while True:
_in = raw_input()
print("received input: " + _in)
if _in.lower() == "debug":
enable_debugging()
thread.start_new_thread (check_input,())
if "DEBUG" in os.environ:
debugging = True
def debug():
if debugging:
print("debug statement");
def enable_debugging():
global debugging
print("enabling debugging")
debugging = True
def disable_debugging():
global debugging
debugging = False
print("1")
debug()
time.sleep(20)
print("2")
debug()
答案 1 :(得分:2)
一种方法是以固定间隔从文件中读取值。
当您想要打开或关闭调试时更新该文件。