1
我有一个三线程的程序。我这样称呼他们:如何确保只有一个线程的实例在Python中运行?
if __name__ == "__main__":
while True:
try:
t1().start()
except:
log.debug('Trouble with t1 synchronizer')
try:
t2().start()
except:
log.debug('Trouble with t2 synchronizer')
try:
t3().start()
except:
log.debug('Trouble with t3 synchronizer')
我想保持这3个线程始终运行。但我也想确保t1,t2和t3每次只有一个实例正在运行。
编辑
我能想到的是有每个线程锁定文件的唯一解决方案。像
if os.path.exists(lockfile):
EXIT THREAD
f=open(lockfile,'w')
f.write('lock')
f.close()
THREAD_STUFF
os.remove(lockfile)
财产以后但不知何故,它看起来并不像一个干净的解决方案,以我为程序可能已经退出,因为某些原因和线程可能不会启动的。
你想让他们都运行,但你只想要一个运行? – cheeken
我想保持这3个线程始终运行。但我也想确保t1,t2和t3每次只有一个实例正在运行。 –
我不明白线程的实例是什么。所有线程基本相同,只是运行不同的代码。 – Gabe