首页 > 解决方案 > While 循环 10 秒并阻塞

问题描述

我有一个应该只运行 10 秒的循环,但是在循环内部我使用了一个阻塞函数,所以循环不会在 10 秒后中断,而只是在阻塞函数之后。

endtime = time.time() + 10 

while time.time() < endtime:
    clientsocket, address = tcpServer.accept()  # blocking
    print("got another client!")
    name = clientsocket.recv(1024)

print("bye")

我想在 10 秒后离开循环,但如果我在 10 秒过去之前进入它并且没有人试图连接,我就不会离开。

我该如何解决这个问题?

标签: pythontimeblocking

解决方案


您应该在 tcp 实例中设置超时,如下所示:

tcpServer.settimeout(10)
 

推荐阅读