为什么断言没有被广泛使用? - python

我发现Python's assert statement是捕获should never happen情况的好方法。当可以信任代码正确时,可以通过Python优化将其删除。

在调试模式下运行Python应用程序似乎是一种完美的机制。但是查看django,twisted和zope等几个Python项目时,assert几乎从未使用过。那么,为什么会这样呢?

为什么在Python社区中不经常使用asserts语句?

参考方案

我想不经常使用assert的主要原因是没有人使用Python的“优化”模式

断言是检测程序错误的很好的工具,可以保护自己免受意外情况的侵害,但是所有这些错误检查都需要付出一定的代价。在C / C++之类的编译语言中,这并不重要,因为断言仅在调试版本中启用,而从发行版本中完全删除。

另一方面,在Python中,调试和发布模式之间没有严格的区别。解释器具有一个“优化标志”(-O),但是目前这实际上并未优化字节码,而只是删除了断言。

因此,大多数Python用户只是忽略-O标志并以“正常模式”运行其脚本,这是一种调试模式,因为启用了断言并且__debug__True,但被认为是“生产就绪”。

切换逻辑也许更明智,即默认情况下“优化”并仅在显式调试模式(*)下启用断言,但是我想这会使很多用户感到困惑,并且我怀疑我们是否会看到这样的变化。

((*)例如,这是Java VM通过设置-ea(启用断言)开关来实现的。)

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python:如何停止多线程的numpy? - python

我知道这似乎是一个荒谬的问题,但是我必须在与部门中其他人共享的计算服务器上定期运行作业,当我开始10个作业时,我真的希望它只占用10个核心而不是更多;我不在乎每次运行一个内核所需的时间是否更长:我只是不想让它侵犯其他人的领土,这将需要我放弃工作等等。我只想拥有10个核心,仅此而已。更具体地说,我在基于Python 2.7.3和numpy 1.6.1的Redh…