定时器
t1=threading.Timer(5,function=run)
t1.start()
5秒钟后运行该线程
例:闹钟
import threading
import time
def run():
print('open')
print(threading.current_thread())
t2 = threading.Timer(5, function=run)
t2.start()
if __name__ == '__main__':
t1=threading.Timer(5,function=run)
t1.start()
while True:
time.sleep(10)
print('主线程')
队列
queue.Queue()先入先出
queue.LifoQueue()后入先出
eue.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 ()判断队列是否空
Queue.join()等待线程完成
线程池
线程池可以提高性能,防止启动大量线程而导致系统变慢,可以更简单的创建线程,适用于突发的需要大量线程,而线程存在时间短的场景
线程池由concurrent.futures下的ThreadPoolExecutor提供,submit(fn, *args,**kwargs)将函数fn提交给线程池,后面是参数
map(fn,*iterables,timeout=None,chunksize=1)启动多线程,让函数fn分别使用后面的可迭代参数shutdown(wait=True)关闭线程池