Функция «перерыв» через определенное время - PullRequest
0 голосов
/ 20 октября 2018

Допустим, определенное время его 5 часов.

Вызов этой функции, внутри 2 разных потоков длительное время может "сломаться"?

Пример:

from threading import Thread

function( ):
    do something can take one second to finish.

threadOne( ):
    while True:
        function( )

threadTwo( ):
    while True:
        function( )

Thread( target = threadOne ).start( )
Thread( target = threadTwo ).start( )

2 темы никогда не заканчиваются.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Ваш алгоритм неполон и немного отсутствует, в обоих ваших потоках вы утверждаете, что, хотя один из них верен, выполняйте функцию.

Ну, чем они заканчиваются?Когда они становятся ложными?Добавьте что-то, что вы хотите сделать, что приведет к завершению первого потока, потому что если поток 1 не прерывается, а функция 1 прерывается, то он просто вызывает функцию AGAIN и продолжает цикл до тех пор, пока вы не прервете программу.

Функции могут ломаться сами по себе, но вам НУЖНО сделать что-то, чтобы завершить потоки.

Например, если я создал цикл for внутри вашего потока, пока он был истинным, и поместил обе функции внутри цикла for, а затем заставил цикл for проходить до тех пор, пока целое число не достигнет 9999, функция должна просто завершитьсяи нить должна заканчиваться, верно?Нет.

он снова вызывает цикл for и продолжает заставлять ваш плохой компьютер считать 9999, пока вы не завершите его.

Всегда создавать конечный протокол.

0 голосов
/ 21 октября 2018

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

...