pythonthread锁对象

简介:

#!/usr/bin/env python


import thread

from time import sleep, ctime


loops = [4,2]


def loop(nloop, nsec, lock):

print 'start loop', nloop, 'at:', ctime()打印开始nloop 创建时间

sleep(nsec)休眠时间

print 'loop', nloop, 'done at:', ctime()打印结束nloop 创建时间

lock.release()释放lock锁


def main():定义main()函数

print 'starting at:', ctime()打印开始 创建时间

locks = []定义locks列表

nloops = range(len(loops))nloops = [0, 1]


for i in nloops:循环nloops

lock = thread.allocate_lock()定义lock = 分配一个LockType 类型的锁对象

lock.acquire()获取lock 尝试获取锁对象

locks.append(lock)把获取的lock放到locks列表里面


for i in nloops:

thread.start_new_thread(loop, (i, loops[i], locks[i]))通过函数loop创建线程,分别传0 4 locks[0],然后执行


for i in nloops:循环nloops

while locks[i].locked(): pass如果获取了锁对象 执行站位


print 'all DONE at:', ctime()打印all done at 创建时间


if __name__ == '__main__':

main()





[root@localhost python]# ./mtsleep2.py

starting at: Sun Sep 15 07:17:04 2013

start loop 1 at: Sun Sep 15 07:17:04 2013

start loop 0 at: Sun Sep 15 07:17:04 2013

loop 1 done at: Sun Sep 15 07:17:06 2013

loop 0 done at: Sun Sep 15 07:17:08 2013

all DONE at: Sun Sep 15 07:17:08 2013



本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1297282,如需转载请自行联系原作者

相关文章
|
6月前
|
前端开发 JavaScript
Bootstrap 5 保姆级教程(十二):弹出框 & 消息弹窗
Bootstrap 5 保姆级教程(十二):弹出框 & 消息弹窗
|
NoSQL 关系型数据库 索引
从一个案例深入剖析InnoDB隐式锁和可见性判断(1)
从一个案例深入剖析InnoDB隐式锁和可见性判断
从一个案例深入剖析InnoDB隐式锁和可见性判断(1)
|
SQL 关系型数据库 MySQL
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
从一个案例深入剖析InnoDB隐式锁和可见性判断
146 0
从一个案例深入剖析InnoDB隐式锁和可见性判断(2)
|
6月前
61.从键盘输入10个正数存入数组x中,然后输入要查找的整数a,如找到则输出a及a的下标,如找不到,则把a存入到数组的最后。
61.从键盘输入10个正数存入数组x中,然后输入要查找的整数a,如找到则输出a及a的下标,如找不到,则把a存入到数组的最后。
44 0
|
关系型数据库 MySQL 索引
从一个案例深入剖析InnoDB隐式锁和可见性判断(3)
从一个案例深入剖析InnoDB隐式锁和可见性判断
115 0
|
存储 关系型数据库 MySQL
从一个案例深入剖析InnoDB隐式锁和可见性判断(4)
从一个案例深入剖析InnoDB隐式锁和可见性判断
|
6月前
|
JavaScript
vue 显示 markdown 文件
vue 显示 markdown 文件
114 0
|
JSON Java 应用服务中间件
使用 Caddy 代替 acme.sh 来为自己的网站颁发免费 SSL 证书
使用 Caddy 代替 acme.sh 来为自己的网站颁发免费 SSL 证书
使用 Caddy 代替 acme.sh 来为自己的网站颁发免费 SSL 证书
|
程序员 C++
C++程序文件的目录结构
C++程序文件的目录结构
244 0
|
Java
【MapStruct】引入MapStruct之后,项目启动java:找不到符号
SpringBoot项目,在引入MapStruct之前项目启动和运行的好好的,按照MapStruct官网推荐的方法引入MapStruct之后,本来正常的项目居然启动不了了。
599 1
【MapStruct】引入MapStruct之后,项目启动java:找不到符号