小编aar*_*ing的帖子

替换Django图像不会删除原始图像

在Django中,如果模型中有ImageFile,则删除将从磁盘中删除关联文件以及从数据库中删除记录.

不应该替换图像还从磁盘中删除不需要的文件?相反,我发现它保留了原始内容并添加了替代品.

现在删除对象不会删除原始文件只替换.

这样做有什么好的策略吗?如果我的用户频繁更换图像,我不想拥有一堆孤儿文件.

python django imagefield

24
推荐指数
4
解决办法
1万
查看次数

共享:内存:使用sqlite3包在python中的不同线程之间的数据库

我想在python中创建一个:memory:database,并从不同的线程访问它.基本上是这样的:

class T(threading.Thread):
    def run(self):
        self.conn = sqlite3.connect(':memory:')
        # do stuff with the database

for i in xrange(N):
    T().start()
Run Code Online (Sandbox Code Playgroud)

并让所有连接引用同一个数据库.

我知道传递check_same_thread=True给connect函数并在线程之间共享连接,但是如果可能的话,我希望避免这样做.谢谢你的帮助.

编辑:纠正错字.我最初说"将所有连接引用到同一个线程"将线程替换为数据库.

python sqlite python-multithreading

16
推荐指数
2
解决办法
8297
查看次数

成对遍历列表或元组

a = [5, 66, 7, 8, 9, ...]
Run Code Online (Sandbox Code Playgroud)

是否可以进行迭代而不是像这样写?

a[1] - a[0]

a[2] - a[1]

a[3] - a[2]

a[4] - a[3]
Run Code Online (Sandbox Code Playgroud)

...

谢谢!

python iteration

16
推荐指数
3
解决办法
1万
查看次数

静态输入语言意味着什么?

我的理解是,这意味着可以编写一个程序来正式证明用静态类型语言编写的程序将没有某些(小)缺陷子集.

我的问题如下:

假设我们有两种图灵完整语言,A和B.A被认为是'类型安全'而'B'被假定为不是.假设我有一个程序L来检查用A写的任何程序的正确性.什么阻止我将用B写的任何程序翻译成A,应用L.如果P从A转换为B,那么为什么不是PL a用B编写的任何程序的有效类型检查器?

我接受过代数培训,而且我才刚开始学习CS,所以可能有一些明显的原因,这不起作用,但我非常想知道.整个'类型安全'的东西已经有一段时间闻到了我的味道.

language-theory turing-complete type-safety

14
推荐指数
2
解决办法
834
查看次数

Python:对这个词典进行排序(dict中的dict)

d = { 'a':{'k':1, 'b':'whatever'},  'b':{'k':2, 'b':'sort by k'} }
Run Code Online (Sandbox Code Playgroud)

想要在python中按k降序排序这个字典.

有点棘手,请帮忙.

python sorting dictionary

12
推荐指数
2
解决办法
1万
查看次数

在django中验证错误时将css类添加到字段

我正在使用Django的模型并且非常好.如果存在与之关联的验证错误,如何突出显示实际文本框(例如border:red).基本上我想要的是在字段存在验证错误时添加类(错误).

python django django-forms django-validation django-media

12
推荐指数
2
解决办法
1万
查看次数

为什么会话方法在sqlalchemy中使用sqlite解除绑定?

代码复制错误:

from sqlalchemy import create_engine, Table, Column, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Message(Base):
    __tablename__ = 'messages'

    id = Column(Integer, primary_key=True)
    message = Column(Integer)


engine = create_engine('sqlite:///' + filename_of_your_choice)
session = sessionmaker(bind=engine)

newmessage = Message()
newmessage.message = "Hello"

messages = session.query(Message).all()
Run Code Online (Sandbox Code Playgroud)

运行此代码会产生:

Traceback (most recent call last):
  File "C:/aaron/test.py", line 20, in <module>
    session.commit()
TypeError: unbound method commit() must be called with Session instance as first argument (got nothing instead)
Run Code Online (Sandbox Code Playgroud)

我95%肯定文件名不是问题,因为我可以从shell连接到它

有任何想法吗?

python sqlite sqlalchemy

7
推荐指数
1
解决办法
2090
查看次数

用Cython条件`ctypedef`

我需要uint64_tstdint.h我正在编写的一些包装代码中访问typedef ,我无法弄清楚如何完成它.问题是,从我从文档中可以看出,我ctypedef必须采取以下形式:

ctypedef unsigned long uint64_t
Run Code Online (Sandbox Code Playgroud)

要么

ctypedef unsigned long long uint64_t
Run Code Online (Sandbox Code Playgroud)

取决于是WORDSIZEbits/wordsize.h64还是32.我无法找到如何从Cython访问这个预处理器定义,如果可以的话,Cython似乎不喜欢ctypedef语句中的if语句,当我尝试放置时if在一个cdef块中的声明,它似乎与声明混淆.有任何想法吗?希望我在这里错过了一些非常基本的东西.

c python cython

7
推荐指数
2
解决办法
1806
查看次数

访问分配正在创建的对象的名称

我正在编写一些代码来确定分配对象的名称.这是一般调试工作,并进一步熟悉python内部.

我将它结构化为类装饰器,以便在可能的情况下,该类的所有实例都将记录其名称.代码相当长,所以除非被问到,否则我不会发布.一般技术如下

  1. __init__用代码装饰类的方法来做我想做的事

  2. 设置caller = inspect.currentframe().f_back并打开inspect.getframeinfo(caller).filename并发送给ast.parse.我没有在这里做任何错误检查,因为(1)这只是用于调试/分析/黑客攻击(2)这个确切的过程"刚刚"完成或代码不会运行.这有问题吗?

  3. 找到ast.Assignment导致当前正在执行的__init__方法运行的实例

  4. 如果len(assignment.targets) == 1那时左侧只有一个项目,我可以从中获取名称targets[0].id.在一个简单的形式a = Foo(),然后assignment.value是一个实例ast.Call.如果它是文字(例如列表),那么value将是该列表和保释,因为我感兴趣的对象没有被分配给名称.

确认这assignment.value.functype(obj).__call__我感兴趣的对象的最佳方法是什么.我很确定我保证它"在某处"或者代码甚至不会运行.我只需要它在顶级.显而易见的事情是走它并确保它不包含任何内部调用.然后我保证我有名字.(我的推理是正确的,我不确定它的假设是否正确).这并不理想,因为如果我感兴趣Foo,这可能会导致我抛弃,a = Foo(Bar())因为我不知道是不是a = Bar(Foo()).

当然我可以检查,assignment.value.func.id但后来有人可以做Foobar = Foo或什么,所以我不想太依赖这个

任何帮助将不胜感激.一如既往,我对我可能忽略的任何其他建议或问题感兴趣.

另外,我真的很惊讶我只需要发明'python-internals'标签.

python python-internals

6
推荐指数
1
解决办法
298
查看次数

关于如何加快距离计算的建议

考虑以下课程:

class SquareErrorDistance(object):
    def __init__(self, dataSample):
        variance = var(list(dataSample))
        if variance == 0:
            self._norm = 1.0
        else:
            self._norm = 1.0 / (2 * variance)

    def __call__(self, u, v): # u and v are floats
        return (u - v) ** 2 * self._norm
Run Code Online (Sandbox Code Playgroud)

我用它来计算矢量的两个元素之间的距离.我基本上为使用此距离度量的向量的每个维度创建该类的一个实例(存在使用其他距离度量的维度).分析表明,__call__这个类的功能占我实现的90%的运行时间(谁会想到).我认为没有任何纯Python方法可以加快速度,但是如果我用C实现它呢?

如果我运行一个简单的C程序,只使用上面的公式计算随机值的距离,它比Python快几个数量级.所以我尝试使用ctypes并调用一个执行计算的C函数,但显然参数和返回值的转换非常昂贵,因为生成的代码要慢得多.

我当然可以在C中实现整个knn并且只是调用它,但问题是,就像我描述的那样,我对向量的某些维度使用不同的距离函数,并且将这些函数转换为C将是太多的工作.

那么我有什么选择呢?使用Python C-API编写C函数会消除开销吗?有没有其他方法可以加快计算速度?

python performance python-c-api

6
推荐指数
1
解决办法
468
查看次数