我的python软件断断续续地死锁(可能是由于某种竞争条件)
在一个正在运行的线程中,它运行
while True:
msg = printQ.get()
print msg
sys.stdout.flush()
调试时,我看到我的一个线程在 系统stdout.flush(). 如果我去掉冲洗线,线就会挂在印刷处。 这是唯一打印到stdout的线程
如果我禁用这个线程,我的软件不会死锁
在多线程环境中刷新stdout是否有任何已知问题?在
这些是在软件死锁时跟踪正在运行的线程。你们有什么发现吗?对我来说,这看起来就像是在排队等东西。唯一让我感到奇怪的是系统stdout.flush()
^{pr2}$
阿法伊克系统标准输出不是真正的线程安全的,但是没有任何代码,实际上是不可能说的。出于调试目的,您可以尝试锁定
sys.stdout.flush
,例如:相关问题 更多 >
编程相关推荐