python多线程用法:
1.函数式:调用thread模块的start_new_thread()方法来创建线程,
例如:
thread.start_new_thread(function,args)
–function是你要在线程里要执行的函数名称,在此相当于一个函数指针.
–args是函数的参数列表,在python里用元组表示,如(’args1’,args2……),注意这里参数必须存在,就算是个无参函数,也要传递一个空元组()
实例:
#!/usr/bin/python
#coding=UTF-8
import thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
输出为:
Thread-1: Sun Jul 17 16:11:04 2016
Thread-2: Sun Jul 17 16:11:06 2016
Thread-1: Sun Jul 17 16:11:06 2016
Thread-1: Sun Jul 17 16:11:08 2016
Thread-2: Sun Jul 17 16:11:10 2016
Thread-1: Sun Jul 17 16:11:10 2016
Thread-1: Sun Jul 17 16:11:12 2016
Thread-2: Sun Jul 17 16:11:14 2016
Thread-2: Sun Jul 17 16:11:18 2016
Thread-2: Sun Jul 17 16:11:22 2016
2.继承类threading.Thread,自定义线程类,重写init()和run()方法,
实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import threading
import time
exitFlag = 0
class myThread (threading.Thread): #继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self): #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print "Starting " + self.name
print_time(self.name, self.counter, 5)
print "Exiting " + self.name
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
thread.exit()
time.sleep(delay)
print "%s: %s" % (threadName, time.ctime(time.time()))
counter -= 1
# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
# 开启线程
thread1.start()
thread2.start()
print "Exiting Main Thread"
输出:
Starting Thread-1
Starting Thread-2
Exiting Main Thread
Thread-1: Thu Mar 21 09:10:03 2013
Thread-1: Thu Mar 21 09:10:04 2013
Thread-2: Thu Mar 21 09:10:04 2013
Thread-1: Thu Mar 21 09:10:05 2013
Thread-1: Thu Mar 21 09:10:06 2013
Thread-2: Thu Mar 21 09:10:06 2013
Thread-1: Thu Mar 21 09:10:07 2013
Exiting Thread-1
Thread-2: Thu Mar 21 09:10:08 2013
Thread-2: Thu Mar 21 09:10:10 2013
Thread-2: Thu Mar 21 09:10:12 2013
Exiting Thread-2