[root@bogon python]# cat test.py
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:',1))
thread.start_new_thread(print_time,('Thread 2:',2))
except:
print 'error:fail to start'
while 1:
pass
[root@bogon python]# python test.py
Thread 1:: Sun Jun 18 18:00:01 2017
Thread 2:: Sun Jun 18 18:00:02 2017
Thread 1:: Sun Jun 18 18:00:02 2017
Thread 1:: Sun Jun 18 18:00:03 2017
//线程模块
[root@bogon python]# cat b.py
import threading
import time
exitFlag=0
class myThread(threading.Thread):
def __init__(self,threadID,name,counter):
threading.Thread.__init__(self)
self.threadID=threadID
self.name=name
self.counter=counter
def run(self):
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:
threading.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"
[root@bogon python]# ./b.py
Starting Thread 1:
Starting Thread 2:
exiting main thread
Thread 1: : Sun Jun 18 18:15:24 2017
Thread 1: : Sun Jun 18 18:15:25 2017
Thread 2: : Sun Jun 18 18:15:25 2017
Thread 1: : Sun Jun 18 18:15:26 2017
Thread 1: : Sun Jun 18 18:15:27 2017
Thread 2: : Sun Jun 18 18:15:27 2017
Thread 1: : Sun Jun 18 18:15:28 2017
exiting Thread 1:
Thread 2: : Sun Jun 18 18:15:29 2017
Thread 2: : Sun Jun 18 18:15:31 2017
Thread 2: : Sun Jun 18 18:15:33 2017
exiting Thread 2:
[root@bogon python]#
//线程同步
[root@bogon python]# cat c.py
import threading
import time
class myThread (threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print "Starting " + self.name
threadLock.acquire()
print_time(self.name, self.counter, 3)
threadLock.release()
def print_time(threadName, delay, counter):
while counter:
time.sleep(delay)
print "%s: %s" % (threadName, time.ctime(time.time()))
counter -= 1
threadLock = threading.Lock()
threads = []
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
thread1.start()
thread2.start()
threads.append(thread1)
threads.append(thread2)
for t in threads:
t.join()
print "Exiting Main Thread"
[root@bogon python]# ./c.py
Starting Thread-1
Starting Thread-2
Thread-1: Sun Jun 18 18:25:39 2017
Thread-1: Sun Jun 18 18:25:40 2017
Thread-1: Sun Jun 18 18:25:41 2017
Thread-2: Sun Jun 18 18:25:43 2017
Thread-2: Sun Jun 18 18:25:45 2017
Thread-2: Sun Jun 18 18:25:47 2017
Exiting Main Thread
[root@bogon python]#
//线程的优先级队列
import Queue
import threading
import time
exitFlag = 0
class myThread (threading.Thread):
def __init__(self, threadID, name, q):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.q = q
def run(self):
print "Starting " + self.name
process_data(self.name, self.q)
print "Exiting " + self.name
def process_data(threadName, q):
while not exitFlag:
queueLock.acquire()
if not workQueue.empty():
data = q.get()
queueLock.release()
print "%s processing %s" % (threadName, data)
else:
queueLock.release()
time.sleep(1)
threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = Queue.Queue(10)
threads = []
threadID = 1
for tName in threadList:
thread = myThread(threadID, tName, workQueue)
thread.start()
threads.append(thread)
threadID += 1
queueLock.acquire()
for word in nameList:
workQueue.put(word)
queueLock.release()
while not workQueue.empty():
pass
exitFlag = 1
for t in threads:
t.join()
print "Exiting Main Thread"
以上程序执行结果:
Starting Thread-1
Starting Thread-2
Starting Thread-3
Thread-1 processing One
Thread-2 processing Two
Thread-3 processing Three
Thread-1 processing Four
Thread-2 processing Five
Exiting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Main Thread
....