|
发表于 2020-7-8 14:26:04
|
显示全部楼层
这样可以的嘛? 我也不清楚有没达到你的需求
- #!/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()
复制代码 |
|