【问题标题】: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 直到你结束它。

      始终创建一个结束协议。

      【讨论】:

        猜你喜欢
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多