python3 模型日记

说明


作为一种 python 框架模型的记录吧,用于个人总结,不定时更新。

正文


1. 主进程退出后,子进程也跟着退出

之前遇到过一种情况,用 flet 写了一个页面,然后又同时开了一个 tcp server 的子线程,flet页面点击关闭后,

tcp server 却没有退出。在linux中按 Ctrl + c 可以强制结束,但是如果在 windows 中单独起一个 powershell 终端,

flet 页面退出后,powershell 终端就卡住了(实际上是 tcp server 未关闭),只能通过关闭终端的方式,这种情况非常影

响调试。于是想要找到一种方式,flet 界面退出后,tcp server 也要退出。threading.Thread 无法关闭子线程,但是

multiprocessing.Process 是可以的,于是有了这样一种模型:

#-*- coding:utf-8 -*-
from multiprocessing import Process
import time

def task1():
    
    while True:
        print(time.time())
        time.sleep(1)


def main():
    print("hello")
    time.sleep(10)
    print("main is finished, start exit")


if __name__ == "__main__":
    task1_pcs = Process(target=task1)
    task1_pcs.start()

    main()
    #task1_pcs.join()
    task1_pcs.terminate()

这个模型可以在自定义主函数 main() 退出后,自动关闭之前启动的进程。套用在一些桌面界面软件上,可以增加用户体验。

posted @ 2024-02-04 14:32  BrianSun  阅读(27)  评论(0)    收藏  举报