gpt4 book ai didi

python - 字节数组上的 iter(callable, sentinel) 形式

转载 作者:行者123 更新时间:2023-12-02 08:45:48 24 4
gpt4 key购买 nike

我正在使用一个 API,该 API 返回以\x04(传输结束)字节终止的消息。我想以一种很好的方式捕捉这个字节。这是我写的代码:

# Only works if buffer size is 1 byte
read = lambda: self._sslsocket.recv(1)

response = b''
for data_buffer in iter(read, b'\x04'):
response += data_buffer

我想让这个解决方案适用于任意缓冲区大小。有没有一种方法可以在不影响性能的情况下做到这一点,或者我应该使用生成器/经典 while True 和 recv(1024) ?

最佳答案

您可以通过以下两种方式之一对其进行编码:

def read(bufsize):
return lambda: self._sslsocket.recv(bufsize)

或更简洁地为:

read = lambda bufsize: lambda: self._sslsocket.recv(bufsize)

使用示例:

response = b''
for data_buffer in iter(read(1), b'\x04'):
response += data_buffer

基本上,这些将本地 read() 函数变成一个非常专门的装饰器(返回函数的函数)。

关于python - 字节数组上的 iter(callable, sentinel) 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53252214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com