python多线程(2)--thread和threading模块的使用

说明

文章首发于HURUWO的博客小站,本平台做同步备份发布。

如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览。

原文链接 python多线程(2)–thread和threading模块的使用直接点击即可前往访问。

更多技术文章访问本人博客HuRuWo的技术小站,包括Android 逆向 app,闲鱼爬虫 微信爬虫 抖音爬虫 群控 等相关知识

前言

thread模块
python不推荐使用这个模块,推荐更高级的threading。
thread模块和对象

函数 描述
start_new_thread(function,args) 产生新线程,指定函数和参数
allocate_lock() 分配一个LockType类型的锁对象
exit() 线程退出
LockType对象的方法
acquire() 尝试获取对象对象
locked 如果获取了返回True否则返回False
release() 释放锁
thread.py

#coding:utf-8
import thread
from time import sleep,ctime
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))#创建nloops数组

    #创建锁并加入组
    for i in nloops:
        lock=thread.allocate_lock()#创建 lock (不能直接加入)
        lock.acquire()#尝试获取lock
        locks.append(lock)#加入组

    for i in nloops:
        thread.start_new_thread(loop,(i,loops[i],locks[i]))#创建线程
    #获取锁对象 成功True 失败False
    for i in nloops:
        while locks[i].locked():pass#如果锁对象被释放 表示解锁了 可以继续执行

    print 'all DONE at:',ctime()

if __name__ == '__main__':
    main()

输出:

starting at : Tue Jul 19 20:23:29 2016
start loop start loop0  1at:  at:Tue Jul 19 20:23:29 2016 
Tue Jul 19 20:23:29 2016
loop 1 done at: Tue Jul 19 20:23:31 2016
loop 0 done at: Tue Jul 19 20:23:33 2016
all DONE at: Tue J
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值