Многопоточный ретранслятор в Python - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть маленький повторитель, Ниже, который продолжает заканчиваться, Как можно так стабильно исправить от сбоев, и не перестать работать .... Я бы добавил сердцебиение к графическому интерфейсу, чтобы увидеть, что оно все еще работает. В Wxpthon моя строка меню становится пустой или белой.

 def TimerSetup():
        import threading, time
        invl = 300

        def dothis():
            try:
                FetchUpdates()
            except Exception as e:
                pass

        class Repeat(threading.Thread):
            def run(self):
                dothis()

        if __name__ == '__main__':
            for x in range(7000):
                thread = Repeat(name = "Thread-%d" % (x + 1))
                thread.start()
                time.sleep(invl)

Ответы [ 2 ]

0 голосов
/ 22 сентября 2010

кажется, вам нужно join () чтобы дождаться начала потока

 def TimerSetup():
        import threading, time
        invl = 300

        def dothis():
            try:
                FetchUpdates()
            except Exception as e:
                pass

        class Repeat(threading.Thread):
            def run(self):
                dothis()

        if __name__ == '__main__':
            for x in range(7000):
                thread = Repeat(name = "Thread-%d" % (x + 1))
                thread.start()
                thread.join()
                time.sleep(invl)
0 голосов
/ 21 сентября 2010

Это выполняется за 7000 итераций. Поэтому, если время выполнения составляет около 7000 * 300 с, оно «работает точно так же, как закодировано» :-) Однако, возможно, количество потоков или действия, которые вы делаете в FetchUpdates, могут быть проблемой. Есть ли обратная связь, когда он останавливается? Достигаете лимит пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...