说明
作为一种 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() 退出后,自动关闭之前启动的进程。套用在一些桌面界面软件上,可以增加用户体验。
标签:__,task1,pcs,模型,tcp,time,main,日记,python3 From: https://www.cnblogs.com/brian-sun/p/18006132