2017年10月18日
摘要:
queue队列 当必须安全地在多个线程之间交换信息时,队列在线程编程中特别有用。 没有数据会一直等。服务器端就会卡住。 有数据就取没有数据就抛出异常。 block=true 阻塞 取不到数据就会阻塞IO timeout =1 阻塞时间1S 等待一秒 没有新消息就抛出错误 maxsize= 3 队列只
阅读全文
posted @ 2017-10-18 00:50
老榕树下的咖啡屋
阅读(1246)
推荐(0)
2017年10月17日
摘要:
Events事件 Events是一个简单的同步对象, 事件表示一个内部标志和线程 可以等待设置标志,或设置或清除标志本身。 Events使用 生成event对象 event = threading.Event() 设置标志位 event.set() 清空标志位 event.clear() 等待设置标
阅读全文
posted @ 2017-10-17 22:26
老榕树下的咖啡屋
阅读(120)
推荐(0)
摘要:
递归锁 一把大锁在加一把小锁。 过程分享:1、启动10个线程,每个线程都执行run3。 2、run3中先加了一个锁,然后执行run1。 3、run1中也加了一个锁,计算完成后解锁返回数据。执行run2。 4、run2中同样加了一个锁,计算完成后解锁打印run1,run2返回值。 5、最后打印num1
阅读全文
posted @ 2017-10-17 09:45
老榕树下的咖啡屋
阅读(279)
推荐(0)
摘要:
在多线程中,同一个变量能被所有线程共享,这个变量能被任何一个线程修改。 看一个实验。 启动5个线程,每个线程把全局变量加1 启动了5个线程,每个线程加1,一共是5个,所以结果是5没有问题。 python2.7下执行: 50个线程,num相加50次,也没有问题。1000个线程相加也是没有问题的。 尝试
阅读全文
posted @ 2017-10-17 08:57
老榕树下的咖啡屋
阅读(347)
推荐(0)
2017年10月16日
摘要:
GIL锁 全局解释器锁 无论cpu是多少核的,python同一时间执行的线程只有一个,但是给我们的感觉是并发的?因为python在不断的进行上下文的切换。 python的线程是调用操作系统的原生线程。因为调用的是c的接口。当Python要调用这个线程去执行任务的时候,cpu要知道上下文,所以要把上下
阅读全文
posted @ 2017-10-16 12:02
老榕树下的咖啡屋
阅读(188)
推荐(0)
摘要:
主程序也是一个进程,只是我们看不到,需要借助函数打印。包括子进程也可以打印。 threading.current_thread() 查看当前线程 运行结果: threading.active_count() 活跃的线程个数 守护线程 守护线程也是子线程,主要是服务于主线程,当主线程退出以后,守护线程
阅读全文
posted @ 2017-10-16 10:56
老榕树下的咖啡屋
阅读(217)
推荐(0)
摘要:
Thread是线程类,有两种使用方法,直接传入要运行的方法或从Thread继承并覆盖run(): Thread继承 以上是通过类的方式创建线程。 关于Thread类 构造方法: Thread(group=None, target=None, name=None, args=(), kwargs={}
阅读全文
posted @ 2017-10-16 09:16
老榕树下的咖啡屋
阅读(3840)
推荐(0)
摘要:
多线程演示 不使用多线程的情况 使用多线程的情况
阅读全文
posted @ 2017-10-16 08:44
老榕树下的咖啡屋
阅读(261)
推荐(0)
摘要:
很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行
阅读全文
posted @ 2017-10-16 08:33
老榕树下的咖啡屋
阅读(196)
推荐(0)
2017年8月29日
摘要:
断言: 类似与判断,后面的程序依赖前面的,可以加一个断言,断言成功继续执行。断言失败报错停止执行。
阅读全文
posted @ 2017-08-29 15:56
老榕树下的咖啡屋
阅读(488)
推荐(0)