Python高级培训——Num5之定时器

定时器:

循环sleeo,在循环里放入要执行的任务,然后sleep一段时间再执行

sleep是阻塞函数,theading模块中的timer是个非阻塞函数

python 定时器 - 简书 (jianshu.com)

class threading.Timer(interval, function, args=[], kwargs={})

队列:元素先进先出,进put(arg),取get(),队列也是阻塞形态

queue.Queue()先入先出

queue.LifoQueue()后入先出

queue.PriorityQueue()可设置优先级

可传参数maxsize设置可存储数据的数量

Queue.put()往队列放数据,block=False,timeout=15任一个都可以不等待,满了就报错

Queue.get()从队列取数据,block=False,timeout=15任一个都可以不等待,空了就报错

Queue.task_done()配合get使用,告诉队列本次get完成

Queue.qsize()获取数据的数量

Queue.full()判断队列是否满

Queue.empty()判断队列是否空

75-Python多线程-线程池_哔哩哔哩_bilibili

Queue.join()等待线程完成

线程池:

线程池可以提高性能,防止启动大量线程而导致系统变慢,可以更简单的创建线程,适用于突发的需要大量线程,而线程存在时间短的场景

线程池由concurrent.futures下的threadPoolExecutor提供

submit(fn,*args,**kwargs)将函数fn提交给线程池,后面是参数

map(fn,*iterables,timeout=None,chunksize=1)启动多线程,让函数fh分别使用后面的可迭代参数

shutdown(wait=true)关闭线程池

使用submit()函数提交后会返回一个future对象

cancel()可以取消该线程,如果线程正在进行,不可取消,返回false,否则取消线程,并返回true

cancelled()返回线程是否被取消

running()返回线程是否正在运行

done()返回线程是否完成,包括取消和正常完成

result(timeout=none)获取该线程的返回结果,会阻塞线程,timeout是阻塞时间

add_done_callback(fn)线程结束后执行fn函数

from datetime import datetime
import time
# 每n秒执行一次,循环sleep函数
def timer(n):
    while True:
        print(datetime.now().strftime("%Y-%m-%d  %H:%M:%S"))#输出当时时间
        time.sleep(n)#sleep一段时间再执行

timer(1)#定义一秒循环

上一篇:线程停止与休眠


下一篇:java线程常用方法