进程就相当于一条高速路,而线程就相当于这条高速上的多个车道。**线程结束,而进程不一定结束;进程结束,线程一定结束。**
日常中多线程访问全局变量通常会引起安全问题,为解决此安全问题,可以采用锁机制**threading.Lock()创建一个锁对象,用Lock.acquire()**进行枷锁操作,**Lock.release()**进行释放锁操作。
Notice:访问全局变量无需加锁,修改全局变量时才需要加锁,修改完毕之后释放锁。
以下以一个生产者线程和一个消费者线程为例。
相较于threading.Lock(),threading.Condition()用于解决生产者没有生产能力,在共享资源不足的情况下,而消费者依然消费造成的资源浪费和无效运行的问题。
import threading
import random #随机
#import time
lock=threading.Condition()#创建Condition对象
g_time=0
g_money=0#共享资源
class Producer(threading.Thread):
def run(self):
global g_money
global g_time
for _ in range(