2016-03-04 86 views
1

我有一个python进程在后台产生多个其他进程。我希望我可以做多线程,但我的代码使用的底层库在多线程环境中不可靠。Python睡眠过程进入无限期睡眠

我的后台python进程需要等待将近一个小时的事件。检查该事件是否发生的唯一方法是使用轮询方法。

所以,我有一个睡眠分钟的代码(time.sleep(60)),并醒来后做一些工作。投票几件事,并去睡觉。

但是,我经历过多次一个/多个线程进入深度睡眠并且从不出来。可能是什么原因?有一个更好的方法吗。 (我不等待IO)

while True: 
    if event: 
     #do lot of stuff 
     break 
    else: 
     #do some stuff 
    time.sleep(60) 

(该平台是OSX)

感谢

+0

你确定它是由'睡眠'引起的,而不是其他代码所做的事情吗?例如,你可能没有考虑到循环应该中断的一些情况,所以它一直在睡觉。 – Munir

+0

'但我的代码使用的底层库在多线程环境中不可靠,但它是可靠的多进程?你在使用什么库,你想做什么? “事件”从哪里来? – Falmarri

+0

图书馆是我工作场所的一些内部图书馆。多进程安全的概率很高。或者我会成为发现错误的人。 :(我正在寻找像设备连接到总线/文件是由用户在特定位置创建的事件。 –

回答

0

你似乎有无限循环。
while TRUE始终是TRUE,所以它停留在该循环中。
只有当if eventTRUE时,会有一个break

你代码中的问题似乎是if event总是FALSE,它从来不是TRUE。所以你留在你的while循环中。