Twilight6 发表于 2020-7-8 14:26:04

大甲鱼D 发表于 2020-7-8 13:56
好的,非常感谢!


这样可以的嘛? 我也不清楚有没达到你的需求

#!/usr/bin/env python
# -*- coding:utf-8 -*-
""""""
"""
现运行一个主算法程序,该算法在运行的过程中会多次调用另一个子算法程序。

主算法程序的运行时间是一定的,如设置为100秒,当到了100秒时可能子算法程序还没有运行结束,如何设置子算法程序立马停止运行,同时主算法程序也停止运行。

原本是想用time模块的函数在主算法程序中进行计时,确定程序运行的时间。但是存在一个问题:在进行已运行时间是否超过规定时间的判断时,已运行时间还未超过规定时间,

但是当转入子算法程序时,在子程序运行一半的时候,达到了规定时间,这种时候就需要立即停止子程序,但是需要等到子程序运行结束才能返回主程序进行时间的判断。

"""
from threading import Thread
from time import sleep,perf_counter

# 子线程
def thread1():
    for i in range(1,100):
      sleep(1)
      print(f'{Thread.getName(t1)}的第{i}次打印')

# 判断时间
def calc_time():
    while True:
      sleep(1)
      time = perf_counter()
      # 如果时间超过 5 秒 则退出循环
      if time >= 5:
            break

# 启动子线程
t1 = Thread(target=thread1)
t1.setName('子线程')



def main_thread():
    # 设置守护线程
    t1.setDaemon(True)
    t1.start()
    # 调用主线程
    calc_time()
    print('主线程终止,子线程也被杀死!')


if __name__ == '__main__':
    main_thread()

大甲鱼D 发表于 2020-7-8 14:47:22

Twilight6 发表于 2020-7-8 14:26
这样可以的嘛? 我也不清楚有没达到你的需求

非常感谢,我对多线程也不是非常了解,我先仔细看看你的模板

Twilight6 发表于 2020-7-8 14:48:28

大甲鱼D 发表于 2020-7-8 14:47
非常感谢,我对多线程也不是非常了解,我先仔细看看你的模板

好,希望能达到你的要求

我真的是个好人 发表于 2020-7-10 21:35:06

回帖20yb,hxd你真的豪啊

靳子轩 发表于 2020-7-10 22:43:40

?

靳子轩 发表于 2020-7-10 22:44:31

shen qing baai piao(pinyin)

临时号 发表于 2020-8-1 17:20:42

可以使用多线程
页: 1 [2]
查看完整版本: 如何设置在程序运行一定时间后停止