2017-08-11 25 views
1

私はフィニッシュプログラムを持っています。私は、変数が設定されている場合にのみ表示されるデバッグコードをいくつか持っています。現在の実装では、変数はコマンドラインまたは環境変数によって設定されます。私は、プログラムの実行中にオンザフライでデバッグを有効/無効にしたいと考えています。例えばプログラムの実行中に、標準入力からバックグラウンドで入力を受け入れる方法

、次のコードを考えてみます。プログラムがオフのデバッグで実行中のプログラムが実行されている間に、どのように私は動的デバッグを有効にすることができますので、

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

[スレッドモジュール](https://docs.python.org/3/library/threading.html) –

+1

いくつかの実験を行い、解決策を見つけました。ありがとう! –

答えて

2

スレッドモジュールを使用したいくつかの実験の後、次のコードが私に役立ちます。 リスナースレッドは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() 
2

一定の間隔でファイルから値を読み取る方法があります。

デバッグを有効または無効にする場合は、そのファイルを更新します。

関連する問題