【问题标题】:Function "break" after certain time一定时间后功能“中断”
【发布时间】:2019-03-25 07:10:55
【问题描述】:
假设某个时间是 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( )
这两个线程永远不会结束。
【问题讨论】:
标签:
python
function
infinite-loop
【解决方案1】:
你有无限循环。根据你所拥有的,function() 必须抛出一个异常来做你想做的事。我建议不要这样做并更改您的代码以删除无限循环。也许基于 function() 的返回有条件地循环。
【解决方案2】:
您的算法不完整且有点缺乏,在您的两个线程中,您都声明虽然它们中的任何一个都是正确的,但请执行该功能。
好吧,他们的结局如何?他们什么时候变成假的?抛出一些你想做的事情会导致线程一结束,因为如果线程 1 没有中断但函数 1 中断,那么它只会再次调用函数并继续循环,直到你中断程序。
函数可以自行中断,但您需要做一些事情来使线程终止。
例如,如果我在你的线程中创建了一个 for 循环,而它是真的,并将两个函数都放在那个 for 循环中,然后让 for 循环运行直到整数达到 9999,那么函数应该结束并且线程应该结束了吧?没有。
它再次调用 for 循环并继续让你可怜的计算机计数 9999 直到你结束它。
始终创建一个结束协议。