程序运行时如何在后台接受来自stdin的输入

时间:2017-08-11 17:50:39

标签: python

我有一个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(可能在单独的线程中)?

2 个答案:

答案 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)

一种方法是以固定间隔从文件中读取值。

当您想要打开或关闭调试时更新该文件。