摘要:
1,线程池代码示例:(注:进程池的话只要将以下代码中的ThreadPoolExecutor替换成ProcessPoolExecutor即可,这里不演示) 运行结果: 2,tpool.shutdown() #close+join 如果没有shutdowm()函数,将出现边进入列表边打印现象,根据需求选 阅读全文
摘要:
1,普通队列:queue.Queue(),先进先出 运行结果: 2,栈:queue.LifoQueue() 运行结果: 3,优先级队列:queue.PriorityQueue(),可以设置放置参数的优先级,优先级也可以是负数 运行结果: 阅读全文
摘要:
定时器Timer:定时开启线程 代码示例: 运行结果: 阅读全文
摘要:
1,条件 #锁 #acquire release#一个条件被创建之初 默认有一个False状态#False状态 会影响wait一直处于等待状态#notify(int数据类型) 造钥匙 代码示例:条件.py 运行结果: 2,notify造钥匙的过程: 阅读全文
摘要:
#事件被创建的时候#False状态 #wait()阻塞#True状态 #wait() 非阻塞#clear 设置状态为False#set 设置状态为True#数据库 文件夹#文件夹里有好多excel表格 #1.能够更方便的对数据进行增删改查 #2,安全访问的机制#起两个线程#第一个线程:连接数据库 # 阅读全文
摘要:
1,递归锁Rlock:递归锁是为了解决死锁问题,且递归锁的特点是在同一个线程中可以被acquire()多次 多个acquire()在递归锁中不会阻塞,而互斥锁Lock就会阻塞 代码示例: 运行结果: 2,递归锁图示:(本质上为一串钥匙) 3,递归锁解决科学家吃面问题: 运行结果: 阅读全文
摘要:
在 Python 的多线程编程中,在实例代码中经常有 thread1.join()这样的代码。那么今天咱们用实际代码来解释一下 join 函数的作用。 join的原理就是依次检验线程池中的线程是否结束,没有结束就阻塞直到线程结束,如果结束则跳转执行下一个线程的join函数。 先看看这个: 1. 阻塞 阅读全文
摘要:
1,死锁 死锁代码示例: 运行结果: 2,线程锁只能保证同一时间只有一个线程取n值,并不能保证数据安全 3,加锁保证了n不会被多个线程操纵;加锁保证数据安全 运行结果: 阅读全文
摘要:
1,守护线程:守护线程会在主线程结束之后等待其他子线程的结束才结束 拓展--守护进程:守护进程随着主进程代码的执行结束而结束 代码示例:守护线程.py 运行结果: 2,#主进程在执行完自己的代码之后不会立即结束,而是等待子进程结束之后 回收子进程的资源 阅读全文