为什么Python的io.BytesIO在大小增加时变得非常慢?

时间:2018-03-22 18:17:07

标签: python python-3.x bottle bytesio

我正在使用Anaconda发行版的Python 3.5.5。 要构建一个Web服务,我使用的是瓶子0.12.13,特别是POST请求。

在POST请求中,请求的数据位于request.body,这是一个io.BytesIO对象。为了获得它的价值,我根据https://docs.python.org/3/library/io.html#io.BytesIO使用getvalue()

服务器接受一个解码为字节的少量文件的json字符串。当我只发送一个文件时,getvalue()非常快,但是2个以上的文件会使它逐渐变慢。例如:

start_time = time.time()
postdata = request.body.getvalue()  # byte stream
print('getvalue time: {}'.format(time.time() - start_time))
print('len(postdata): {}'.format(len(postdata)))

1个文件的输出:

getvalue time: 0.0005793571472167969
len(postdata): 12522

输出2个文件:

getvalue time: 0.14102387428283691
len(postdata): 21684

即使2个文件的大小比102400字节的默认瓶子BaseRequest.MEMFILE_MAX小得多,我也将其调整为1024000,但仍然没有改进。

有谁知道它的原因/解决方法?

提前致谢!

0 个答案:

没有答案