python:In-memory file对象,是否需要使用块读取它们

2024-05-21 17:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我们有一个大文件,有一种技术可以读取和处理它的块。在

假设我在一个请求中收到了一个文件(我看到它是InMemoryFile对象),并想读取它的内容。如果我使用read()一次读取所有内容会有什么危害,还是最好使用块来读取?在

更新:

我还不清楚的是:如果我们收到一个请求(带有inmemory对象),这不意味着文件已经在内存中了吗?我看不到其他地方可以存放。如果它已经在内存中,那么.read()会发生什么变化?在


Tags: 文件对象内存危害内容read地方技术
1条回答
网友
1楼 · 发布于 2024-05-21 17:13:47

在上传文件时,Django总是为您提供一个file-类的对象。如果文件不是太大,它将为您提供内存中的对象,如果它的太大,将首先流式传输到磁盘。在

Where uploaded data is stored

By default, if an uploaded file is smaller than 2.5 megabytes, Django will hold the entire contents of the upload in memory. This means that saving the file involves only a read from memory and a write to disk and thus is very fast.

通过总是给你一个类似于文件的对象,你不必调整你的代码以适应内存中变量的特殊情况,但是你不必忍受从磁盘读取大文件所带来的性能损失。在

对于内存中的文件对象,^{} method将只返回整个文件内容。对于较大的文件,您将得到一系列足够小的块,以便进行有效的处理。在

如果不使用字符串执行其他操作,则从内存中的文件对象读取不会实际创建新的字符串;因为字符串是不可变的,因此可以安全地共享它。在

相关问题 更多 >