我正在运行ubuntu,并安装了python-dbg软件包.当尝试直接使用已安装的版本时,一切都很好:
$ gdb python2.7-dbg
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
---x snipped x---
Reading symbols from /usr/bin/python2.7-dbg...done.
(gdb) r
Starting program: /usr/bin/python2.7-dbg
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Python 2.7.3 (default, Feb 27 2014, 19:39:25)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Program received signal SIGINT, Interrupt.
0x00007ffff6997743 in __select_nocancel () at ../sysdeps/unix/syscall-template.S:82
82 ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) py-bt (<--- works, just has nothing to do)
(gdb) …Run Code Online (Sandbox Code Playgroud) 我有一些代码需要散列某些数据,然后在另一个进程中,继续散列更多的数据.
有没有办法从md5或hashlib模块创建一个对象,它具有与'd41d8cd98f00b204e9800998ecf8427e'不同的初始值?我的意思是类似于:
x = md5.from_digest('0123456789abcdef')
x.update(new_data)
Run Code Online (Sandbox Code Playgroud)
注意:不太理想的方法是保存原始md5对象并在以后恢复它,但是afaik HASH对象是不可拾取的.
有没有办法为我获得弱引用代理的对象获得正确的引用?
我已经浏览了weakref 模块的文档,但无法在那里得到答案,或者通过手动戳一个weakproxy 对象。
我的代码中有一小部分与此类似(当然是真实矩阵而不是零填充):
x = [rinterface.FloatSexpVector([0]*(1000**2)) for i in xrange(20)]
y = robjects.r('list')(x)
Run Code Online (Sandbox Code Playgroud)
它看起来像是导致内存泄漏.
运行以下代码时:
for i in xrange(10):
x = [rinterface.FloatSexpVector([0]*(1000**2)) for i in xrange(20)]
y = robjects.r('list')(x)
del x
del y
robjects.r('gc(verbose=TRUE)')
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error: cannot allocate vector of size 7.6 Mb
In addition: Warning messages:
1: Reached total allocation of 2047Mb: see help(memory.size)
2: Reached total allocation of 2047Mb: see help(memory.size)
3: Reached total allocation of 2047Mb: see help(memory.size)
4: Reached total allocation of 2047Mb: see help(memory.size)
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我应该做的其他事情?我也尝试将变量命名为robjects.globalenv然后rm() - 在gc()之前将它们命名,但它似乎没有用. …