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