一、定时器 使用定时器去触发一些事件
例子:
import threading
import time
def run():
print('定时器启动')
timer = threading.Timer(5,run) #再启用定时器,实现循环
timer.start()
if __name__ == '__main__':
t1 = threading.Timer(1,function=run) #创建一个定时器
#5秒后启动线程 #方法
t1.start()
二、队列
'''
queue.Queue()先入先出
queue.LifoQueue()后入先出
queue.PriorityQueue()可设置优先级
可传参数maxsize设置可存储数据的数量
queue.LifoQueue()后入先出
queue.PriorityQueue()可设置优先级
可传参数maxsize设置可存储数据的数量
Queue.qsize()获取数据的数量
Queue.full()判断队列是否满
Queue.empty()判断队列是否空
Queue.join()等待线程完成
'''
import queue
q = queue.Queue(maxsize=3) #创建一个队列 最大容量为3
q.put(1)#放入数字1
q.put(2)
q.put(3)
# q.put(4) #放入超过最大容量的个体,程序会一直等待里边个体拿出
# q.put(4,False,timeout=3)#设置等待时间后,会等待3秒后,程序报错
print(q.queue) #打印出队列里个体 : deque([1, 2, 3])
print(q.qsize()) #打印队列里的个体数量: 3
q.get() #依次拿出队列里的一个个体
print(q.full()) #判断队列是否为满 打印为False或Ture
print(q.empty()) #判断队列是否为满 打印为False或Ture
print(q.get()) #打印本次拿出的个体
# q1 = queue.PriorityQueue()可设置优先级
# q1.put(2,'nihao1')
# q1.put(5,'nihao2')
# (优先级,放入元素)
生产者、消费者经典案例
'''生产者消费者模型'''
import queue
import threading
import time
q = queue.Queue(maxsize=10) #创建队列
def put_in():
count = 1
while True:
q.put(f'红糖糍粑{count}') #放入
print(f'红糖糍粑{count}出锅啦')
count += 1
time.sleep(1) #休眠一秒
def get_out(name):
while True: #一直循环
print(f'{name}吃了{q.get()}')
time.sleep(1)
if __name__ == '__main__':
p = threading.Thread(target=put_in) #创建线程,调用函数
p.start()
g = threading.Thread(target=get_out,args=('qq',)) #创建线程,调用函数
#传入对象要用元组的形式 (a,b)
g.start()
线程池:http://c.biancheng.net/view/2627.html
Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程 (runoob.com)
|