python学习之线程和进程

  • 多线程对基本类型变量的操作无效,原因是pytho的变量作用域: class, def, lambda
a = 5  # 一个基本类型变量

def change():
    a = a + 3
    print(a)

>>> change()  # 报错

def change():
    global a  # 申明一个全局变量
    a = a + 3
    print(a)

>>> change()  #不会错
8   # 结果为8
q = []
def customor():
    if len(q) <= 0:
        cond.wait()
    q.pop()

# 需要注意的是,当线程wait()以后,被唤醒了是继续从wait()的地方开始执行的.所以它醒来以后就会直接pop()

while len(q) <= 0:
    cond.wait()

# 这样它被唤醒之后还会再次判断