第18章 多线程编程(2)

18.4 thread模块

import thread
from time import ctime, sleep

loops = [4, 2]

def loop(nloop, nsec, lock):
    print 'start loop ', nloop, ' at: ', ctime()
    sleep(nsec)
    print 'loop ', nloop, ' done at: ', ctime()
    lock.release()

def main():
    print 'starting at: ', ctime()
    locks = []
    nloops = range(len(loops))
    
    for i in nloops:
        lock = thread.allocate_lock()
        lock.acquire()
        locks.append(lock)
    
    for i in nloops:
        thread.start_new_thread(loop, (i, loops[i], locks[i]))
    
    for i in nloops:
        while locks[i].locked():
            pass
    
    print 'all DONE at: ', ctime()

main()
我们先调用thread.allocate_lock()函数创建一个锁的列表,并分别调用各个锁的acquire()函数获得锁。获得锁表示"把锁锁上"。

在线程结束的时候,线程要自己去做解锁操作。最后一个循环只是坐在那一直等,直到两个锁都被解锁为止才继续进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值