Я ищу класс (подкласс от Threading.Thread), который инициализируется и запускается из нескольких мест в программе.Чего я хочу избежать, так это если поток уже запущен откуда-то еще, если другое место в программе пытается его запустить
t= somemodule.TheThread(some,args)
t.start()
, программа может продолжаться (но поток запускается, только если тот же потокне работает ни здесь, ни где-либо еще).
Я могу придумать несколько не очень элегантных способов добиться этого с помощью установки флагов, но должен быть хороший способ справиться с этим.Я посмотрел на шаблоны синглтонного типа с декораторами или с переопределением new , но главная проблема в том, что если я сохраню тот же экземпляр, то вы не сможете (насколько мне известно) вызывать start несколько раз, дажепоток завершен.
Я думал о создании объекта потока в другом объекте, который может проверить, работает ли текущий поток, но я не смог понять, как обеспечить безопасность этого потока.
У кого-нибудь есть идеи?