Python学习笔记——多线程编程(二)

@线程同步
    #多线程中总会有一些特定的函数或代码块不希望(或不应该)被多个线程同时执行。
    #当线程间共享全局变量,多个线程对该变量执行不同的操作时,该变量最终的结果可能是不确定的
    #临界区:指的是一个访问共用资源的程序片段。
 
@锁
    #有两种状态:锁定、未锁定。
    #两个函数:获得锁(Lock.acquire)、释放锁(Lock.release() )
    #两种锁:threading.Lock()、threading.RLock()
 
@threading.Lock()和threading.RLock()的区别
    #threading.Lock() 加载线程的锁对象,是一个基本的锁对象,一次只能一个锁定,其余锁请求,需等待锁释放后才能获取
    #threading.RLock() 多重锁,在同一线程中可用被多次acquire。如果使用RLock,那么acquire和release必须成对出现, 调用了n次acquire锁请求,则必须调用n次的release才能在线程中释放锁对象
    
@锁的例子
    #!/usr/bin/env python
    # -*-coding:utf-8 -*-
    import threading
    import time
 
    num = 0
 
    def sum_num(i):
        global num
        time.sleep(1)
        num += i
        print(num)
 
    print("%s thread start!" % (time.ctime()))
 
    try:
        lock = threading.RLock()
        list = []
        for i in range(6):
            t = threading.Thread(target=sum_num, args=(i,))
            list.append(t)
            t.start()
 
        for threadinglist in list:
            threadinglist.join()
 
    except KeyboardInterrupt as e:
        print("you stop the threading")
 
    print('%s thread end!'%(time.ctime()))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值