小编Bar*_*ley的帖子

Python 3使用ROUND_HALF_UP上下文舍入一半

任何人都可以解释或提出一个解决方法,为什么当我在Python 3中舍入小数,并将上下文设置为舍入一半时,它将舍入2.5到2,而在Python 2中它正确舍入为3:

Python 3.4.3和3.5.2:

>>> import decimal
>>> context = decimal.getcontext()
>>> context.rounding = decimal.ROUND_HALF_UP
>>> round(decimal.Decimal('2.5'))
2
>>> decimal.Decimal('2.5').__round__()
2
>>> decimal.Decimal('2.5').quantize(decimal.Decimal('1'), rounding=decimal.ROUND_HALF_UP)
Decimal('3')
Run Code Online (Sandbox Code Playgroud)

Python 2.7.6:

>>> import decimal
>>> context = decimal.getcontext()
>>> context.rounding = decimal.ROUND_HALF_UP
>>> round(decimal.Decimal('2.5'))
3.0
>>> decimal.Decimal('2.5').quantize(decimal.Decimal('1'), rounding=decimal.ROUND_HALF_UP)
Decimal('3')
Run Code Online (Sandbox Code Playgroud)

python decimal rounding python-3.x

11
推荐指数
1
解决办法
4791
查看次数

Django model.save()不使用loaddata

我有一个模型,它覆盖了save()来强制一个字段:

class MyModel(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当我运行加载数据来加载夹具时,save()似乎没有调用它,因为slug字段在数据库中是空的.我错过了什么吗?

我可以通过pre_save钩子信号来使它工作,但这有点像黑客并且开始save()工作会很好.

def mymodel_pre_save(sender, **kwargs):
    instance = kwargs['instance']
    instance.slug = slugify(instance.name)

pre_save.connect(mymodel_pre_save, sender=MyModel)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

django django-models

9
推荐指数
1
解决办法
1644
查看次数

Java和虚拟内存ulimit

我试图在虚拟内存限制为2GB ulimit -v 2000000但仍会出现内存错误的环境中使用java .java -version在这种环境中运行可以:

$ java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

无论我设置多低-Xmx,我都无法让java在这种环境下运行.但是,如果ulimit -v设置为2.5GB,那么我可以设置-Xmx为250m,但不能更高.

$ java -Xmx250m -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

$ java -Xmx251m -version
#
# There is insufficient memory …
Run Code Online (Sandbox Code Playgroud)

java openjdk ulimit java-7

5
推荐指数
1
解决办法
6343
查看次数