python十五章 保持时间、计划任务和启动程序

    使用计算机的时钟调度程度,在特定的时间和日期运行。

time模块

  1. Python内置time模块能读取到系统时钟的当前时间
    time.time()返回UTC时间的秒数
    time.sleep()函数让程序暂停一会
  2. round(now, 4)将数字四舍五入到最接近的整数。将now舍入到小数点后四位数字。

datetime模块

  1. datetime.datetime.now()
    tmp = datetime.datetime.now()
    print(tmp)
    
    结果是:
    2018-11-18 21:42:52.986468

    返回一个datetime对象,表示当前的日期和时间(当前计算机的时钟),
    UTC时间戳也可以转换成如上个格式:

    tmp2 = datetime.datetime.fromtimestamp(time.time())
    print(tmp2)
    
    结果是:
    2018-11-18 21:44:45.624439

    datetime对象可以用比较操作符进行比较,弄清楚谁在前面,谁在后面。

  2. timedelta数据类型,表示一段时间,而不是一个时刻: datetime.timedelta()
    接受关键字参数 weeks、days、hours、minutes、seconds、milliseconds 和 microseconds
    因为月和年是可变的时间,所以不接收这两个关键字;

    delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
    print(delta)
    sec = delta.total_seconds()
    print(sec)
    
    结果:
    11 days, 10:09:08
    986948.0

    返回格式良好,人类可读的字符串。total_seconds()返回这时间段的秒数。
    计算一个日期之后的时间:

    dt =datetime.datetime.now()
    future = datetime.timedelta(days=1000)
    print(dt + future)
    
    结果是:
    2021-08-14 21:57:00.079643
  3. 利用time.sleep()暂停到一个特定的日期。

  4. 利用datetime.strftime()方法将datetime对象格式化为可读的字符串

    oct = datetime.datetime(2015,10,21,16,29,0)
    print(oct)
    print(oct.strftime('%Y/%m/%d %H:%M:%S'))
    
    结果:
    2015-10-21 16:29:00
    2015/10/21 16:29:00
  5. 将字符串换成datetime对象
    datetime.datetime.striptime()函数,

回顾Python的时间函数

多线程

  1. 你可以使用 Python 的threading 模块,在单独的线程中执行延迟或安排的代码。
    要得到单独的线程,首先要调用 threading.Thread()函数
    import threading, time
    
    print('Start of program.')
    
    
    def takeANap():
        time.sleep(5)
        print('Wake up!')
    
    
    threadOdj = threading.Thread(target=takeANap)
    threadOdj.start()
    print("end of the program")

    为了创建一个 Thread 对象,我们调用 threading.Thread(),并传入关键字参数 target=takeANap
    注意是函数名,不加小括号的,加上就是调用函数了。

  2. 也可以向目标函数传递参数
    常规参数可以作为一个列表,传递给 threading.Thread()中的 args 关键字参数。关键字参数可以作为一个字典,传递给threading.Thread()中的kwargs 关键字参数。

  3. 并发问题
    多线程可以同时云心个,但是多线程可能会导致所谓的并发问题,即通过这些线程同时读写变量,并相互干扰,就会产生并发问题。
    s所以:绝对不让多个线程读取和写入相同的变量,当创建一个Thread对象的时候,要确保其目标函数只使用该函数中的局部变量。

从Python启动其他程序

  1. 利用内建函数subprocess模块中的Popen()函数,Python程序可以启动计算机的其他程序,Popen()中的P表示的是进程:Process
    import subprocess
    subprocess.Popen('C:\\Windows\\System32\\calc.exe')
    
    打开计算器

    poll()方法:是问是否执行完你给她的代码,如果这进程在poll()调用的是时候仍然在执行,poll方法就返回None,如果该程序已经终止,它会返回该进程的整数退出嗲吗。
    wait()方法,就像是等着你的朋友执行完她的代码,然后继续执行你的代码,该方法是阻塞的,直到启动的进程终止。

  2. webbrowser.open()函数可以从程序启动 Web 浏览器,打开指定的网站

  3. 可以在Python中启动另一个python脚本,就像启动其他应用程序一样。
    subprocess.Popen(["python.exe位置", "hello.py"])

  4. 用默认的应用程序打开文件
    subprocess.Popen(['start', 'hello.txt'], shell=True)
    这是在windown上的操作,列表中第一个参数是start,如果是MAC,第一个参数是open
     

猜你喜欢

转载自blog.csdn.net/q1138266752/article/details/84205234
今日推荐