最近正在改进自己写的一个web服务器,因为Python的多线程是假多线程,就使用了多进程。
写了这么一个Worker用于在进程中开启线程(不知道有没有用,但是服务器本地延迟还是那么高)
还用了一个Manager的值对象控制进程的停止,在主进程使用一个循环判断是否接受到关闭信号。
但是当主进程想要退出时却发送控制台虽然关闭但进程依旧在后台运行的情况:
并且会弹出错误框。之后尝试了各种方法,但是只能达到子进程关闭主进程无法关闭的情况。
在进程池使用close以及join方法而不使用get以使得进程可以被python终止。
由于进程池没有关闭与堵塞,导致Python回收时无法通过
pathos.multiprocessing.ProcessPool.terminate(obj)
这个方法进行关闭子进程。
并且主进程因为循环没有接受到错误以及关闭信号(pathos无法跳出错误,会重新开启子进程)而导致主进程无法终止。



