While 循环 10 秒并阻塞

时间:2020-12-30 13:15:22

标签: python time blocking

我有一个应该只运行 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 秒过去之前进入它并且没有人试图连接,我就不会离开。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

tcpServer.settimeout(10)