Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 非阻塞呼叫的睡眠_Python_Sockets_Nonblocking_Thread Sleep - Fatal编程技术网

Python 非阻塞呼叫的睡眠

Python 非阻塞呼叫的睡眠,python,sockets,nonblocking,thread-sleep,Python,Sockets,Nonblocking,Thread Sleep,我正在寻找从非阻塞套接字接收数据的最佳睡眠值。例如: while True: data=s.recv(1024) if not data: time.sleep(10) #10ms else: pass #... 没有睡眠会导致100%的CPU使用率,所以你知道如何获得最佳的CPU使用率和带宽吗?睡眠需要多长时间,这样CPU才能进行线程切换 顺便说一句,通过SO_SNDBUF/SO_RECVBUF设置套接字的缓冲区和设置TCP_节点延迟有

我正在寻找从非阻塞套接字接收数据的最佳睡眠值。例如:

while True:
    data=s.recv(1024)
    if not data:
        time.sleep(10) #10ms
    else:
        pass #...
没有睡眠会导致100%的CPU使用率,所以你知道如何获得最佳的CPU使用率和带宽吗?睡眠需要多长时间,这样CPU才能进行线程切换


顺便说一句,通过SO_SNDBUF/SO_RECVBUF设置套接字的缓冲区和设置TCP_节点延迟有意义吗?还是应该将它们结合使用。它基本上会暂停程序,并在套接字上有可用数据时将其唤醒。

使用。它基本上会暂停程序,并在套接字上有可用数据时将其唤醒。

如果您计划使用
sleep()
,为什么不直接使用阻塞套接字?

如果您计划使用
sleep()
,为什么不直接使用阻塞套接字?

您不应该自己这样做。如果您需要代码每隔一段时间唤醒一次,即使没有收到任何数据,也可以使用该调用并超时


顺便说一句,TCP_节点延迟是发送端的,不会影响你的
阅读。

你不应该自己这样做。如果您需要代码每隔一段时间唤醒一次,即使没有收到任何数据,也可以使用该调用并超时


顺便说一句,TCP_节点延迟是发送端的,不会影响您的
读取
s.

取消模式学习。现在!忘记函数
sleep()
曾经存在过。对于
sleep()
的每次使用,还有另一种更合适的方法。请取消学习模式。现在!忘记函数
sleep()
曾经存在过。对于
sleep()
的每次使用,还有另一种更合适的方法。在我的例子中,套接字切换读/写调用。recv/send/send/send/recv/recv/…在我的例子中,套接字切换读/写调用。recv/send/send/send/recv/recv/…我想当我使用select(…)时,当我返回并尝试接收数据时,数据可以在非阻塞套接字中消失。@No先生。你从哪里得到这个主意的?除非您犯了编程错误,否则您不能通过TCP/IP的任何API丢失数据。我想当我使用select(…)时,当我返回并尝试接收数据时,数据可能会被放入非阻塞套接字中。@No先生。您是从哪里得到这个想法的?除非您犯下编程错误,否则您不能通过TCP/IP的任何API丢失数据。