python 编程,应该养成哪些好的习惯
2024-10-21 06:05:07
python 编程,应该养成哪些好的习惯?
无缓冲输出
python -u
sys.stdout.flush()
性能分析
python -m cProfile -o prof.txt my_script.py
import pstats
p = pstats.Stats('prof.txt')
p.strip_dirs().sort_stats('time', 'cumulative').print_stats()
#p.strip_dirs().sort_stats('time', 'cumulative').print_callees()
导入模块路径
import os
print os.__file__
输出异常行数
print >>sys.stderr, sys.exc_info()[-1].tb_lineno, str(e)
查看调用栈
''.join(traceback.format_stack(frame))
空间使用(ref: http://stackoverflow.com/questions/449560/how-do-i-determine-the-size-of-an-object-in-python )
import sys
from numbers import Number
from collections import Set, Mapping, deque
try: # Python 2
zero_depth_bases = (basestring, Number, xrange, bytearray)
iteritems = 'iteritems'
except NameError: # Python 3
zero_depth_bases = (str, bytes, Number, range, bytearray)
iteritems = 'items'
def getsize(obj_0):
"""Recursively iterate to sum size of object & members."""
def inner(obj, _seen_ids = set()):
obj_id = id(obj)
if obj_id in _seen_ids:
return 0
_seen_ids.add(obj_id)
size = sys.getsizeof(obj)
if isinstance(obj, zero_depth_bases):
pass # bypass remaining control flow and return
elif isinstance(obj, (tuple, list, Set, deque)):
size += sum(inner(i) for i in obj)
elif isinstance(obj, Mapping) or hasattr(obj, iteritems):
size += sum(inner(k) + inner(v) for k, v in getattr(obj, iteritems)())
# Check for custom object instances - may subclass above too
if hasattr(obj, '__dict__'):
size += inner(vars(obj))
if hasattr(obj, '__slots__'): # can have __slots__ with __dict__
size += sum(inner(getattr(obj, s)) for s in obj.__slots__ if hasattr(obj, s))
return size
return inner(obj_0)
Immutable object
如果不注意可能出现意外数据变多、变少的情况。可能导致任务执行过久、输出数据偏少或取值雷同。
最新文章
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
- Delphi Virtual String Tree 基本用法
- 探索javascript----我对渐变轮播图的理解
- 『Python』 爬取 WooYun 论坛所有漏洞条目的相关信息
- #include <;process.h>;
- coreGraphs和动画
- centos系统php5.6版本安装gd扩展库
- [pytorch修改]npyio.py 实现在标签中使用两种delimiter分割文件的行
- genetic model
- 【转】Extjs2.2.1 DateField 变形的问题解决方案
- Dubbo实践笔记
- JavaScript之DOM操作(二)
- python学习(21) smtp发送邮件
- JavaScript与DOM(下)
- PHP(六)PHP和HTML混合的一种形式
- 关于log4j知识
- hdu2444 The Accomodation of Students(推断二分匹配+最大匹配)
- CMDB实现的四种方式
- Spring注解(AOP)
- Git的使用规范(二)
热门文章
- SDUT 3375 数据结构实验之查找三:树的种类统计
- 使用Notepad++与Dev_c++编译
- 《Effective Java》第11章 序列化
- 《Maven实战》笔记-3-Maven仓库
- 在 Java 的反射中,Class.forName 和 ClassLoader 的区别
- C/C++中char* p = ";hello"; 和 const char* p = ";hello";的区别
- 对XML文档进行修改
- spring mvc常用注解标签
- Python学习第三方库Requests: 让 HTTP 服务人类
- Python3中的Json与Pickle