多线程指的是同一进程下启动多个线程运行一个程序。有一个主线程 “main thread”,有两种方法可以创建线程:
import threading
thread = threading.Thread(target = None,name = None,args = (),kwargs = {})
target :线程需要运行的函数
name:线程名称
args :函数参数元组
kwargs:函数参数字典
第二种创建方法是继承 threading.Thread 类
import threading
threadLock = threading.Lock()
class MyThread(threading.Thread):
def __init__(self,name):
threading.Thread.__init__(self) # 必须先执行主类的构造函数
self.name = name
def run(): # 线程需要执行的内容写在 run 函数
print "Starting " + self.name
# 获得锁,主要是为了线程同步,否则可以完全不用下面两行代码
threadLock.acquire() # 如果成功获得锁定后会返回 True
threadLock.release() # 释放锁
注意我们在创建线程时,别忘了还有一个主线程 “main thread”,并且多线程是 默认可以共内存的,但是多进程 默认无法共内存!
线程方法说明:
start(): 一旦线程被创建,它的活动需要通过调用线程的 start() 方法来启动
is_alive():一旦线程被激活,则这线程被认为是’alive’(活动)。当它的run()方法终止时-正常退出或抛出未处理的异常,则活动状态停止。is_alive() 方法测试线程是否活动,大致上,线程从 start()调用开始那点至它的run()方法中止返回时,都被认为是活动的。
join():一个线程可以调用另一个线程的 join() 方法,直到被调用线程结束,否则调用线程会一直阻塞。
setName():设置线程名称,getName() 获取线程名称
setDaemon():设置为 “守护线程”,这标志的特点是当剩下的全是守护线程时,则Python程序退出。标志用 setDaemon(True) 或 setDaemon(False) 设置,用isDaemon()获取。