Python实践


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)

  目录