
python中的线程之semaphore信号量
semaphore是一个内置的计数器,每当调用acquire()时,内置计数器-1;每当调用release()时,内置计数器+1。
计数器不能小于0,当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。
来看下面的代码:
1 2 3 4 5 6 7 8 |
|
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
可以看到,程序会在很短的时间内生成20个线程来打印一句话。
如果在主机执行IO密集型任务的时候再执行这种类型的程序时,计算机就有很大可能会宕机。
这时候就可以为这段程序添加一个计数器功能,来限制一个时间点内的线程数量。
相关推荐:《Python视频教程》
代码如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|