Python多线程锁定对象:阻塞一个线程,但不阻塞其他线程

时间:2018-11-09 18:09:46

标签: python-3.x multithreading

我有一个多线程脚本,其中包含菜单系统线程和其他几个负责执行工作的线程。所有线程都打印到标准输出。在其他线程正在运行时,用户可以通过检测到按键按下的主线程中的循环返回菜单。此时,只有主线程应该能够打印到stdout,而辅助线程将跳过任何打印语句。我正在使用信号量来管理线程之间的stdout。这不仅阻塞了其他线程,不仅阻塞了从打印到stdout的进程,而且还阻塞了所有线程(预期的,但不是期望的)。我正在寻找一种干净/高效/ pythonic的方式让其他线程仅在可获取信号量时才打印,否则,请跳过打印语句,但继续执行。我目前正在使用一个简单的if semaphore.acquired()语句执行此操作,但是我想知道是否有更好的方法?我已经研究了其他锁定机制,但是似乎它们都不符合要求,也许我不太清楚它们的用法。

0 个答案:

没有答案