内存8g能编python吗_如何编写内存高效的Python程序?

据说Python会自动管理内存。我很困惑,因为我有一个Python程序始终使用超过2GB的内存。

这是一个简单的多线程二进制数据下载和解包程序。def GetData(url):

req = urllib2.Request(url)

response = urllib2.urlopen(req)

data = response.read() // data size is about 15MB

response.close()

count = struct.unpack("!I", data[:4])

for i in range(0, count):

UNPACK FIXED LENGTH OF BINARY DATA HERE

yield (field1, field2, field3)

class MyThread(threading.Thread):

def __init__(self, total, daterange, tickers):

threading.Thread.__init__(self)

def stop(self):

self._Thread__stop()

def run(self):

GET URL FOR EACH REQUEST

data = []

items = GetData(url)

for item in items:

data.append(';'.join(item))

f = open(filename, 'w')

f.write(os.linesep.join(data))

f.close()

有15个线程正在运行。每个请求获取15MB的数据并将其解压缩并保存到本地文本文件中。这个程序怎么能消耗超过2GB的内存?在这种情况下,我需要做任何内存回收工作吗?如何查看每个对象或函数使用了多少内存?

如果您能给我一些关于如何使python程序保持在内存高效模式下运行的建议或技巧,我将不胜感激。

编辑:这里是“cat/proc/meminfo”的输出MemTotal: 7975216 kB

MemFree: 732368 kB

Buffers: 38032 kB

Cached: 4365664 kB

SwapCached: 14016 kB

Active: 2182264 kB

Inactive: 4836612 kB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值