加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

编程大神进阶之路:Python技巧小贴士

发布时间:2019-10-27 03:43:41 所属栏目:建站 来源:机器之心编译
导读:副标题#e# 介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷。但是还有很多 Python 的编程小技巧鲜被提及。因此,本文会试着介绍一些其它文章没有提到的小技巧,这些小技巧也是我平时会用到的的。让我们一探究竟吧! 整理字符

如果你曾经编写过一个创建了某种类的大量实例的程序,那么你可能已经注意到,你的程序突然需要大量的内存。那是因为 Python 使用字典来表示类实例的属性,这使其速度很快,但内存使用效率却不是很高。通常情况下,这并不是一个严重的问题。但是,如果你的程序因此受到严重的影响,不妨试一下「__slots__」:

  1. class Person: 
  2.     __slots__ = ["first_name", "last_name", "phone"] 
  3.     def __init__(self, first_name, last_name, phone): 
  4.         self.first_name = first_name 
  5.         self.last_name = last_name 
  6.         self.phone = phone 

当我们定义了「__slots__」属性时,Python 没有使用字典来表示属性,而是使用小的固定大小的数组,这大大减少了每个实例所需的内存。使用「__slots__」也有一些缺点:我们不能声明任何新的属性,我们只能使用「__slots__」上现有的属性。而且,带有「__slots__」的类不能使用多重继承。

限制「CPU」和内存使用量

如果不是想优化程序对内存或 CPU 的使用率,而是想直接将其限制为某个确定的数字,Python 也有一个对应的库可以做到:

  1. import signal 
  2. import resource 
  3. import os 
  4.  
  5. # To Limit CPU time 
  6. def time_exceeded(signo, frame): 
  7.     print("CPU exceeded...") 
  8.     raise SystemExit(1) 
  9.  
  10. def set_max_runtime(seconds): 
  11.     # Install the signal handler and set a resource limit 
  12.     soft, hard = resource.getrlimit(resource.RLIMIT_CPU) 
  13.     resource.setrlimit(resource.RLIMIT_CPU, (seconds, hard)) 
  14.     signal.signal(signal.SIGXCPU, time_exceeded) 
  15.  
  16. # To limit memory usage 
  17. def set_max_memory(size): 
  18.     soft, hard = resource.getrlimit(resource.RLIMIT_AS) 
  19.     resource.setrlimit(resource.RLIMIT_AS, (size, hard)) 

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!