在C中,我们可以找到的大小int,char等我想知道如何获得物体的大小就像一个字符串,整数,等在Python.
我使用的XML文件包含指定值大小的大小字段.我必须解析这个XML并进行编码.当我想更改特定字段的值时,我将检查该值的大小字段.在这里,我想比较一下我输入的新值是否与XML中的值相同.我需要检查新值的大小.在字符串的情况下,我可以说它的长度.但是在int,float等的情况下我很困惑.
你将如何找出一个对象使用了多少内存?我知道有可能找出代码块使用了多少,但不是实例化对象(在其生命中的任何时间),这就是我想要的.
我有一些(几乎十)gb的内存占用了ipython内核.我认为这是来自大型对象(矩阵,列表,numpy数组......)我可能在某些操作中产生,现在我不再需要了.
我想列出我定义的所有对象,并按内存占用情况对它们进行排序.有一个简单的方法吗?对于某些类型,有nbytes方法,但并非所有...所以我正在寻找一种通用的方法来列出我所做的所有对象和它们的内存占用.
我正在尝试使用pandas read_csv或read_stata函数读取一个有点大的数据集,但我一直在使用Memory Errors.数据帧的最大大小是多少?我的理解是,只要数据适合内存,数据帧就应该没问题,这对我来说应该不是问题.还有什么可能导致内存错误?
对于上下文,我试图阅读2007年消费者财务调查,包括ASCII格式(使用read_csv)和Stata格式(使用read_stata).该文件大约为200MB作为dta,大约1.2GB作为ASCII,并且在Stata中打开它告诉我,有2200个观察/行有5,800个变量/列.
我有一个非常大的python脚本,200K,我想尽可能少使用内存.它看起来像:
# a lot of data structures
r = [34, 78, 43, 12, 99]
# a lot of functions that I use all the time
def func1(word):
return len(word) + 2
# a lot of functions that I rarely use
def func1(word):
return len(word) + 2
# my main loop
while 1:
# lots of code
# calls functions
Run Code Online (Sandbox Code Playgroud)
如果我把我很少使用的函数放在模块中,并且只在必要时动态导入它们,我就无法访问数据.就我而言,这就是我的意思.
我是python的新手.
任何人都可以把我放在正确的道路上吗?如何打破这个大脚本,以便它使用更少的内存?是否值得将很少使用的代码放在模块中,只在需要时调用它们?
例如,存储一百万(32位)整数列表需要多少内存?
alist = range(1000000) # or list(range(1000000)) in Python 3.0
Run Code Online (Sandbox Code Playgroud) 我有一些大的(~100 Mb)文件,我经常处理.虽然我在处理期间尝试删除不需要的数据结构,但内存消耗有点过高.我想知道是否有办法有效地操纵大数据,例如:
def read(self, filename):
fc = read_100_mb_file(filename)
self.process(fc)
def process(self, content):
# do some processing of file content
Run Code Online (Sandbox Code Playgroud)
是否存在重复的数据结构?使用像self.fc这样的类范围属性不是更高效的内存吗?
我什么时候应该使用垃圾收集?我知道gc模块,但是我之后会调用它del fc吗?
更新
ps 100 Mb本身不是问题.但浮动转换,进一步处理显着增加工作集和虚拟大小(我在Windows上).
我itertools.chain在Python中使用方法将几个Django链接Querysets在一起.通过这样做,我没有触及数据库,这是我需要的有效行为.但是,我正在使用第三方库对这些结果进行分页,此库仅接受列表和查询集对象.使用链对象调用它时,我收到以下错误:
Exception Value: 'itertools.chain' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)
库中的那条线(django-pagemore)让我疯狂的是:
objects = self.objects[page0*self.per_page:1+page*self.per_page]
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当使用链时,你无法切片.
我知道我可以使用list()方法轻松地将链对象转换为列表,但是这将评估整个查询集,并且这可以包含数千个项目.
经过一些关于如何计算Python对象大小的研究后,
我做了一些测试和使用sys.getsizeof(cPickle.dumps(content))(其中content一个是链中的一个对象)给了我一个值15,915 bytes,所以一个包含3000个这些对象的链需要45.53 MBaprox!
python ×8
memory ×2
django ×1
ipython ×1
memory-leaks ×1
module ×1
numpy ×1
object ×1
optimization ×1
organization ×1
package ×1
pandas ×1
performance ×1
sizeof ×1