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 @   BrianSun  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2021-02-04 Win10 下安装使用easyocr图片识别工具
点击右上角即可分享
微信分享提示