Python
生命周期
- import的模块,只要import了,就会创建一个模块对象,存到sys.modules[‘script_b’],多次导入会复用这个对象,这个对象一直存在,除非强制回收或进程结束
- 所有数据类型(整数、字符串、列表、字典、类等等)的变量的值都分配在堆,引用可能在栈中
- 模块的全局变量、函数、类的引用存到堆,局部变量的引用存到栈。
- 回收:一旦堆中的变量的值没有引用指向它,就会立马回收
包引用
project
-cores
-tool
--log_tool.py
app.py
通过import tool.log_tool as log_tool导入
通过python -m app启动
日志
import logging
from logging import handlers
path = "/xxx/app.log"
logger = logging.getLogger('app')
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
'%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
time_rotating_file_handler = handlers.TimedRotatingFileHandler(filename=path,
when='D')
time_rotating_file_handler.setFormatter(formatter)
time_rotating_file_handler.setLevel(level=logging.INFO)
logger.addHandler(time_rotating_file_handler)
def debug(msg):
logger.debug(msg)
def info(msg):
logger.info(msg)
def warning(msg):
logger.warning(msg)
def error(msg):
logger.error(msg)
def critical(msg):
logger.critical(msg)