摘要: 多线程实现并发: 多进程实现并发: 缺点:无限的开进程线程,会导致服务端崩溃。 可用进程池线程池替代。 阅读全文
posted @ 2018-03-12 10:46 Claire_xu 阅读(269) 评论(0) 推荐(0) 编辑
摘要: from threading import Timer import random class Code: def __init__(self): self.make_cache() def make_cache(self,interval =15):#生成的验证码保存在cache里,过15s重新生成验证码,更新cache s... 阅读全文
posted @ 2018-03-09 17:59 Claire_xu 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 线程间互相等状态。 阅读全文
posted @ 2018-03-09 17:42 Claire_xu 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 信号量相当于一个锁锁着的房间里的多个床位,同一时间可以有多个线程获得信号量,而锁则只能被一个线程获得。 阅读全文
posted @ 2018-03-09 16:25 Claire_xu 阅读(146) 评论(0) 推荐(0) 编辑
摘要: Lock() 互斥锁会导致死锁,用RLock()递归锁代替。 递归锁:可以连续acquire多次,每acquire一次计数器+1(无论acquire的是哪个锁),只有计数为0才能被acquire 阅读全文
posted @ 2018-03-09 16:19 Claire_xu 阅读(130) 评论(0) 推荐(0) 编辑
摘要: GIL不是Python特性,是CPython解释器特性,因为CPython有垃圾回收机制。 GIL 本质是互斥锁,保护解释器安全。 保证线程安全,垃圾回收线程不会和其他线程一起运行。 多个线程不能实现真正并行,因为解释器GIL锁的原因(同一时间解释器只执行一个线程),但是,线程A取得GIL锁后可能因 阅读全文
posted @ 2018-03-09 15:55 Claire_xu 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1、开进程的开销远大于开线程 1、其他线程都结束后,主线程才会结束,守护线程才会结束。即守护线程要等其他所有非守护线程结束后才会结束 2、其他线程都结束后,主线程才会结束,主进程才会结束,守护进程才会结束。貌似守护进程和守护线程是相同条件下结束。 阅读全文
posted @ 2018-03-09 15:09 Claire_xu 阅读(1071) 评论(0) 推荐(0) 编辑
摘要: 进程和线程模块下都有队列类。 线程队列: 进程队列: JoinableQueue示例: 阅读全文
posted @ 2018-03-09 12:28 Claire_xu 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 进程实现: 阅读全文
posted @ 2018-03-09 12:13 Claire_xu 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 开启子进程的两种方式: 1、使用Process类 2、写子类继承Process类 使用多进程实现并发: 守护进程:p.deamon = True 1、主进程运行结束后子进程也结束 2、守护进程里不能再新开子进程 互斥锁:访问同一个文件,同一个打印终端等,把并发改为串行 与join的区别:join是全 阅读全文
posted @ 2018-03-08 16:03 Claire_xu 阅读(137) 评论(0) 推荐(0) 编辑