0
私はコンソールに出力するスレッドを実行しています。スレッドで変数の変更をリスンするプロセッサ効率的な方法
コンソールに出力するタイミングを知るために、私は変数の変更にリスナーを使用しています。
しかし、そのリスナーはループ中に多くの処理能力を消費しています。変更を聞くより効率的な方法はありますか? 、あなたはあなたのために物事を印刷するには、別のスレッドを必要としない
def output_console_item(message, sound=None, over_ride_lock=False):
log = StandardLogger(logger_name='output_console_item')
# lock to serialize console output
lock = threading.Lock()
def print_msg(message):
# Wait until console lock is released.
if over_ride_lock is False:
while True:
if CONSOLE_CH.CONSOLE_LOCK is False:
break
# time.sleep(0.10)
# Make sure the whole print completes or threads can mix up output in one line.
with lock:
print(message)
return
thread = Thread(target=print_msg, args=(message,))
thread.start()
thread.join()
if sound:
thread = Thread(target=play_sound, args=(sound,))
thread.start()
thread.join()
私はロック変数を使用しています。コンソールの出力をロックするが、他の人のためにオープンに保つ。そのことを念頭に置いて、私は印刷出力をロックするだけでもっと多くのことをする必要があります。私はCONSOLE_LOCK変数の変更を聞く必要があります。 – Emily
また、print_msgがスレッド化されている理由は、サウンドを並行して再生できるようにするためです。 – Emily
また、より多くの機能をロギングする必要があります。コマンドライン出力でサウンドを出力できるようにする必要があります。 – Emily