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