定时器
与线程一样,通过调用 start()
方法启动定时器。而 cancel() 方法可以停止计时器(在计时结束前),定时器在执行其操作之前等待的时间间隔可能与用户指定的时间间隔不完全相同。
threading.Timer(定时时间, function=函数, args=("传参",),kwargs={'':''})
注:args是传递的参数为元组,kwargs关键字参数为字典
让定时器重复工作可以在定时器函数内部重新调用定时器,通过cancel()停止
import threading
def run(i):
print(f'重复{i}次')
i+=1
time_2 = threading.Timer(1, function=run, args=(i,))#循环嵌套
time_2.start()
if i==5:
time_2.cancel()#停止定时器,仅当计时器仍处于等待状态时有效。
# time_1=threading.Timer(定时时间, function=函数, args=("传参",))
time_1=threading.Timer(1, function=run, args=(1,))
time_1.start()#启动
线程优先级队列( Queue)
Queue 模块中的常用方法:
import queue
q=queue.Queue(maxsize=2)#先入先出
Q1=queue.LifoQueue()#后入先出
q3=queue.SimpleQueue()#自定义优先级
q3.put((1,'优先级为1'))#放入
线程池
导入 from concurrent.futures import ThreadPoolExecutor
75-Python多线程-线程池_哔哩哔哩_bilibili
from concurrent.futures import ThreadPoolExecutor
import time
def run(x):
print(f'线程{x}')
time.sleep(2)
return x * 10
def calback(future):
print(future.done())
if __name__ == '__main__':
with ThreadPoolExecutor(max_workers=2) as pool:
future1 = pool.submit(run, 1)
future2 = pool.submit(run, 2)
future3 = pool.submit(run, 3)
future1.add_done_callback(calback) # 不阻塞主线程
time.sleep(3)
future3.add_done_callback(calback)
print('线程完成')
result = pool.map(run, [7, 8, 9])