任何人都可以解释或提出一个解决方法,为什么当我在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) 我有一个模型,它覆盖了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)
提前致谢.
我试图在虚拟内存限制为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)