Python多线程同步实例分析(6)

def get_wait_time(): return random.random()/5.0 # 资源数0 S = threading.Semaphore(0) def consumer(name): S.acquire() time.sleep(get_wait_time()) print name def producer(name): # time.sleep(0.1) time.sleep(get_wait_time()) print name S.release() if __name__ == "__main__": for i in xrange(5, 10): c = threading.Thread(target=consumer, args=("consumer:%s"%i, )) c.start() for i in xrange(5): p = threading.Thread(target=producer, args=("producer:%s"%i, )) p.start() time.sleep(2)

下面是一种可能的执行结果:

Python多线程同步实例分析

producer:3 producer:0 consumer:6 producer:4 producer:1 consumer:5 producer:2 consumer:7 consumer:8 consumer:9

View Code

条件Condition

接下来看一下另一种同步机制条件Condition,该同步条件不是很直观,为了更好的查看其工作过程,先定义一些函数:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bab83c7945682ba42daa254705097e2d.html