我有一个包含大约30k记录的表,我正在尝试迭代并使用Django的ORM进行处理.每个记录存储几个二进制blob,每个blob可以是几MB,我需要处理和写入文件.
但是,由于内存限制,我在使用Django时遇到了麻烦.我的系统上有8GB的内存,但在处理了大约5k的记录之后,Python进程消耗了所有8GB并被Linux内核杀死.我已经尝试了各种技巧来清除Django的查询缓存,例如:
MyModel.objects.update()settings.DEBUG=Falsegc.collect()但是,这些似乎没有任何明显的效果,我的过程继续遇到某种内存泄漏,直到它崩溃.
还有什么我可以做的吗?
由于我只需要一次处理一个记录,并且我从不需要在进程中再次访问同一记录,所以我不需要保存任何模型实例,或者一次加载多个实例.你如何确保只加载一条记录,并且Django 没有缓存任何内容并在使用后立即取消分配所有内存?
如何防止异常过早终止Python生成器/迭代器?
例如,请考虑以下事项:
#!/usr/bin/env python
def MyIter():
yield 1
yield 2
yield 3
raise Exception, 'blarg!'
yield 4 # this never happens
my_iter = MyIter()
while 1:
try:
value = my_iter.next()
print 'value:',value
except StopIteration:
break
except Exception, e:
print 'An error occurred: %s' % (e,)
Run Code Online (Sandbox Code Playgroud)
我期待输出:
value: 1
value: 2
value: 3
An error occurred: blarg!
value: 4
Run Code Online (Sandbox Code Playgroud)
但是,在异常之后,迭代器终止,并且即使我已经处理了异常并且没有破坏我的循环,也永远不会产生值4.为什么这样做?
我正在尝试使用South将新的URLField添加到模型中,例如:
class Document(models.Model):
text = models.TextField()
reference_page = models.URLField(blank=True, null=True)
source_page = models.URLField(blank=True, null=True) # new field
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,python manage.py schemamigration myapp --auto我得到错误:
DatabaseError: column myapp_document.source_page does not exist
LINE 1: ...ext", "myapp_document"."reference_page", "myapp_doc...
Run Code Online (Sandbox Code Playgroud)
我正在使用PostgreSQL作为我的数据库后端.我正确地初始化了我的南方应用程序,并且已经为它运行了迁移.我确保我的Django和South安装是最新的.
为什么现在会给我这个错误?
编辑:奇怪的是,如果我手动创建数据库中的列,则schemamigration调用成功,但当然migrate调用失败,直到我手动删除列.这很奇怪.
我有两个项目列表:
A = 'mno'
B = 'xyz'
Run Code Online (Sandbox Code Playgroud)
我想生成所有排列,无需替换,模拟将A中项目的所有组合替换为B中的项目,而不重复.例如
>>> do_my_permutation(A, B)
['mno', 'xno', 'mxo', 'mnx', 'xyo', 'mxy', 'xyz', 'zno', 'mzo', 'mnz', ...]
Run Code Online (Sandbox Code Playgroud)
这对我来说是直截了当的,但是我知道Python的starndard itertools模块,我相信它可能已经实现了这一点.但是,我无法识别实现此确切行为的函数.我可以用这个模块来完成这个功能吗?
尝试将密集和稀疏数据与scipy.spare.hstack合并时,偶尔会遇到错误:
Traceback (most recent call last):
File "hstack_error.py", line 3, in <module>
X = scipy.sparse.hstack(hstack_parts)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/construct.py", line 263, in hstack
return bmat([blocks], format=format, dtype=dtype)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/construct.py", line 329, in bmat
raise ValueError('blocks must have rank 2')
ValueError: blocks must have rank 2
Run Code Online (Sandbox Code Playgroud)
重现此代码的最少代码是:
import scipy.sparse
hstack_parts = [[[0.17968359700312667, -0.23497267759562843, 5.5625, 12.0, 12.0, -0.3514978725245902, 4.562932312249999, 7.578125000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.0, -1.0, -1.0, -1.0], [0.43775723232977204, -0.04553734061930783, 4.486910994764398, 12.0, 12.0, -0.33614476914571956, 2.8162986569528794, 4.74869109947644, 0.0, 0.0, 0.0, 0.0, 0.0, …Run Code Online (Sandbox Code Playgroud) 您如何让sklearn 的SGDClassifier预测显示不确定性?
我试图确认SGDClassifier将报告 50% 的输入数据的概率,这些数据不严格对应于任何标签。但是,我发现分类器始终是 100% 确定的。
我正在使用以下脚本对此进行测试:
from sklearn.linear_model import SGDClassifier
c = SGDClassifier(loss="log")
#c = SGDClassifier(loss="modified_huber")
X = [
# always -1
[1,0,0],
[1,0,0],
[1,0,0],
[1,0,0],
# always +1
[0,0,1],
[0,0,1],
[0,0,1],
[0,0,1],
# uncertain
[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0],
[0,1,0],
]
y = [
-1,
-1,
-1,
-1,
+1,
+1,
+1,
+1,
-1,
+1,
-1,
+1,
-1,
+1,
-1,
+1,
]
def lookup_prob_class(c, dist):
a = sorted(zip(dist, c.classes_))
best_prob, best_class …Run Code Online (Sandbox Code Playgroud) 当我尝试安装pysparse via时pip install pysparse==1.3-dev,构建失败并显示错误:
pysparse/sparse/src/spmatrixmodule.c:4:22: fatal error: spmatrix.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这些类型的错误通常是一些缺少系统开发包的结果,但谷歌搜索没有显示"spmatrix"的任何内容.我尝试安装python-sparse包,它确实提供了这个文件,但我仍然得到同样的错误.
我该如何解决?
你如何@commit_manually在Django 1.8中实现?
我正在尝试升级Django 1.5代码以使用Django 1.8,并且由于一些奇怪的原因,commit_manually装饰器在Django 1.6中被移除而没有直接替换.我的进程遍历数千条记录,因此它不能将整个进程包装在单个事务中而不会耗尽内存,但仍需要在事务中对某些记录进行分组以提高性能.为此,我有一个用@commit_manually包装的方法,每N次迭代调用transaction.commit().
我无法从文档中确切地说出来,但这似乎仍然得到了支持.我只需要打电话set_autocommit(False)而不是有一个方便的装饰.它是否正确?
我不小心在我的 git 存储库中提交了一个符号链接。当我删除它链接到的文件,然后删除符号链接本身时,如果我尝试在 Egit 中提交删除,我现在会收到一般错误“执行添加命令期间捕获异常”。git commit如果我尝试从命令行运行,我只会得到输出:
Changes not staged for commit:
typechange: /path/to/old/symlink
Run Code Online (Sandbox Code Playgroud)
为什么 git 无法提交此更改?
使用神经网络估计静止图像或视频流中的距离是否可行?
我有一个激光游侠取景器,可提供视频输出以及距离测量。但是,距离测量需要将激光照射到环境中,这并不总是理想的或不允许的。我希望有一个选项可以将其切换为“被动”模式,在该模式下,图像被馈送到神经网络,然后该神经网络可以提供距离估计,而无需激活激光器。最初,网络将在活动模式下从测距仪对图像+距离对进行训练。
我不是神经网络专家,尽管Google发现神经网络在图像分类和姿态估计方面有很多用途,但我找不到用于距离估计的任何现有技术。这看似可行,还是我在浪费时间?每N像素一个输入的基本前馈网络是否足够?还是需要其他架构?
python ×8
django ×3
algorithm ×1
django-orm ×1
django-south ×1
git ×1
scikit-learn ×1
scipy ×1
ubuntu ×1