为什么python脚本停止执行循环语句但进程本身仍然有效?

为什么python脚本停止执行循环语句但进程本身仍然有效?

我在 Ubutnu 18.04 上运行人脸识别 Python 脚本作为守护进程,它使用 ssh 请求从另一台服务器获取图片并对其执行操作。我在 Python 脚本中有此代码,它一直在运行,但 while 循环的语句停止执行。进程本身是活动的

While true:
 ssh request to another server to recieve pictures 
 time.sleep(1)

我检查了另一台服务器的目录,图片就在那里

答案1

您自己回答了这个问题,您正在以守护进程的形式运行一个线程。Python 线程本质上是非守护进程的,最好不要使用它。当程序明确终止时,守护进程不会终止,当您终止程序时,您必须通过调用 .join() 将守护进程线程重新加入其父线程。

而且由于 GIL,Python 无法使用线程,所以最好使用多处理包并实现进程而不是线程。

但您需要给我们提供更多代码才能真正回答您的问题。

thread = Thread(target=clientThread, args=(connection, client_address, history))
        try:
            print('Starting Thread for: ', client_address)
            thread.start()


def clientThread (connection, client_address, history):  
    while True:                        
         data = connection.recv(512).decode('utf8')
         dataParser(connection, client_address,history, data)

相关内容