当前位置:   article > 正文

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

python thread.start_new_thread

说明

文章首发于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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

输出:

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
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/143411
推荐阅读
相关标签
  

闽ICP备14008679号