码迷,mamicode.com
首页 > 编程语言 > 详细

python线程详解

时间:2015-11-06 00:22:01      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

#线程状态

技术分享

 

#线程同步(锁)
#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题。

技术分享

 

#threading模块
#常用方法:
‘‘‘
threading.currentThread():返回当前的线程变量
threading.enumerate():返回一个包含正在运行的线程的list,正在运行指:线程启动后,结束前,不包含启动前和终止后的线程
threading.activeCount():返回正在运行的线程数量,与len(threading.enumerate())具有相同的效果
‘‘‘

# -*- coding: cp936 -*-
#python 27
#xiaodeng
#http://www.jb51.net/article/68323.htm
#python线程详解



#案例
import threading

#方法1:将要执行的方法作为参数传给Thread的构造方法
def func():
    print xiaodeng

t=threading.Thread(target=func)
t.start()
t.join()#join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)

#方法2:从Thread继承,并重写run()
class MyThread(threading.Thread):
    def run(self):
        print 重写run()方法

t=MyThread()
t.start()
t.join()


‘‘‘
#构造方法:
Thread(group=None,target=None,name=None,args=(),kwargs={})
group:线程组,目前还没有实现,库引用时提示必须是None
target:要执行的方法
name:线程名
args/kwargs:要传入方法的参数,args和kwargs两个参数其实是二选一
#实例方法
isAlive():返回线程是否在运行
get/setName(name):获取/设置线程名
is/setDaemon(bool):获取/设置是否守护线程。初始值从创建该线程的线程继承,当没有非守护线程仍在运行时,程序将终止
start():启动线程
join([timeout]):阻塞当前上下文环境的线程。
‘‘‘


#Lock()
#lock是可用的最低级的同步指令,Lock处于锁定状态时,不被特定的线程拥有,Lock包含2种状态--锁定和非锁定以及2个基本的方法
#构造方法:
#Lock()
#实例方法:
#acquire([timeout]):使线程进入同步阻塞状态,尝试获得锁定
#release():释放锁,使用前线程必须已获得锁定,否则将抛出异常
#案例:
print --*25
import threading
import time

data=0
lock=threading.Lock()

def func():
    global data
    print threading.currentThread().getName()

    #调用acquire([timeout])时,线程将一直阻塞
    #直到获得锁定或直到timeout秒后
    #返回是否获得锁定
    if lock.acquire():
        print lock.acquire():,lock.acquire()
        print %s get the lock. % threading.currentThread().getName()
        data+=1
        time.sleep(2)
        print %s release lock... % threading.currentThread().getName()

        #调用release()将释放锁
        lock.release()

t1=threading.Thread(target=func)
t2=threading.Thread(target=func)
t3=threading.Thread(target=func)
t1.start()
t2.start()
t3.start()

 

python线程详解

标签:

原文地址:http://www.cnblogs.com/dengyg200891/p/4941218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!