python有毒:python多进程,函数内print的内容没有打印出来

python多进程,函数内print的内容没有打印出来

问题描述:
python使用进程池,执行 start_time = time.time()之后,打印不出日志

from datetime import time

def process_data(file_path):
    print "ceshi111"
    start_time = time.time()
    print "ceshi2222"

发现 ceshi111 可以打印出来, ceshi2222不能打印出来。

问题原因:
from datetime import time 修改为 import time

原因分析:
使用datetime.time导入的是一个时间对象,而不是时间相关的函数,所以time.time()调用失败,导致ceshi2222无法打印。

datetime模块提供了丰富的时间对象和相关函数,但并未提供获取当前时间戳的time函数。这是因为datetime模块的设计目的不同于time模块。
datetime模块的主要目的是:

  1. 提供高精度的时间对象来存储和表示时间信息。能够精确到微秒和时区信息。
  2. 提供丰富的时间相关运算和转换功能。如添加减去年月日时分秒,时区转换等。
  3. 方便进行国际化的日期处理。
    所以,datetime模块注重日期对象本身以及丰富的运算能力。而获取当前时间戳的功能时间模块已经能够满足,所以datetime模块并未提供time函数。

time模块datetime.time模块的区别

  1. time模块提供时间相关的函数和工具,datetime.time提供时间对象。
  2. time以浮点形式存储简单时间信息,datetime.time提供丰富的时间对象,能够精确到微妙,并支持时区。
  3. time主要用于简单的时间运算和格式化,datetime.time可进行复杂的日期运算和转换。
    因此,根据需要选择不同的模块:
  4. 如果只需要简单的时间格式化、计算差值或获取时间戳,使用time模块足够。
  5. 如果需要复杂的日期运算或高精度的时间对象,选择datetime模块。
  6. 如果涉及到时区转换或国际化日期,datetime是必选模块。
    所以,对于大多数简单的时间处理需求,time模块已经足够,datetime模块提供的功能更加强大全面,适用于高精度或复杂的日期运算场景。

time模块更加注重 Unix 时间戳和简单的时间转换格式化,主要提供:

  1. time函数获取当前时间戳,以秒为单位。
  2. gmtime和localtime函数将时间戳转换为tm结构体。
  3. strftime函数将tm结构体格式化为自定义字符串。
  4. strptime函数将自定义字符串解析为tm结构体。
    所以,time模块主要满足简单的时间获取、格式化和简单运算需求。更高级的功能由datetime模块提供。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐