Python多线程

Python多线程

threading.Thread

Thread 是threading模块中最重要的类之一,可以使用它来创建线程。有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法;另一种是创建一个threading.Thread对象,在它的初始化函数(init)中将可调用对象作为参数传入。
第一种:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/7/24 21:49
# @File    : test2.py


#初始化线程

import  threading

class Mythread(threading.Thread):
    def __init__(self,lock,name):
        threading.Thread.__init__(self)
        self.lock=lock
        self.name=name

    def run(self):
        print 'hello',self.name


loops=['a','b','c','d','e']

for i in loops:
        lock=threading.Lock()
        t1=Mythread(lock,i)
        t1.start()
第二种:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/7/24 20:38
# @File    : test1.py

#简单例子

import threading
from time import sleep


def show():
    print 'hello'
    sleep(1)

for i in range(5):
    t=threading.Thread(target=show)
    t.start()
Thread类还定义了以下常用方法与属性:
Thread.getName()
Thread.setName()
Thread.name
用于获取和设置线程的名称。
Thread.ident
获取线程的标识符。线程标识符是一个非零整数,只有在调用了start()方法之后该属性才有效,否则它只返回None。
Thread.is_alive()
Thread.isAlive()
判断线程是否是激活的(alive)。从调用start()方法启动线程,到run()方法执行完毕或遇到未处理异常而中断 这段时间内,线程是激活的

Thread.join([timeout])

调用Thread.join将会使主调线程堵塞,直到被调用线程运行结束或超时。参数timeout是一个数值类型,表示超时时间,如果未提供该参数,那么主调线程将一直堵塞到被调线程结束。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/7/24 21:58
# @File    : join02.py


import  threading
from time import sleep


def t1():
    print 't1 start'
    sleep(5)
    print 't1 done'

def t2():
    print 't2 start'

thread1=threading.Thread(target=t1)
thread2=threading.Thread(target=t2)
thread1.start()
thread1.join()   #阻塞,只到thread1完成
thread2.start()

threading.RLock和threading.Lock

在threading模块中,定义两种类型的琐:threading.Lock和threading.RLock。它们之间有一点细微的区别
这两种琐的主要区别是:RLock允许在同一线程中被多次acquire。而Lock却不允许这种情况。注意:如果使用RLock,那么acquire和release必须成对出现,即调用了n次acquire,必须调用n次的release才能真正释放所占用的琐。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值