Python 多线程编程

话不多说, 直接上代码

from threading import Thread, Lock
import time
import dis

globalVar = [0]
lock = Lock()


class MyThread(Thread):
    def __init__(self):
        super().__init__()

    def run(self):  # 实现自己的Thread类时, 需要重写run方法
        global globalVar
        lock.acquire()
        tmp = globalVar[0]
        globalVar[0] = tmp + 1
        lock.release()


def f(n):
    # print(n) 仅仅用来测试传参, 注释掉
    global globalVar
    lock.acquire()
    tmp = globalVar[0]
    globalVar[0] = tmp + 1
    lock.release()


if __name__ == "__main__":
    ts = []

    # 实现多线程的第一种方式, 继承Thread类, 重写run方法. -- MyThread
    for i in range(1, 1001):
        ts.append(MyThread())

    # 实现多线程的第二种方式, target指定f函数, args传递参数.
    for i in range(1, 1001):
        ts.append(Thread(target=f, args=(1,)))

    # 启动 t
    for t in ts:
        t.start()

    time.sleep(0.1)
    print(globalVar[0])  # 这里应该是2000

    # 打印机器码
    # dis.dis(MyThread)
    # print("-----------------")
    # dis.dis(f)

输出结果
2000

posted @ 2021-09-07 19:43  搬砖__码农  阅读(75)  评论(0)    收藏  举报