1. 多线程练习---函数式Thread
#coding=utf-8from time import ctime, sleep
import thread
count=0
playlist1=['lost.avi','功夫熊猫.rmvb','good.mp4','天空之城.rmvb','someone.rmvb','food.doc']
playlist2=['silence.mp3','beyond.mp3','happy.mp3']
movie_format=['avi','mp4','rmvb','rm','flv']
music_format=['mp3']
def player(thread_no,list):
l=len(list)
global count
local_count=0
for i in range(l):
count+=1
local_count+=1
print "global",count
print "local",local_count
format=list[i].split('.')[-1]
print "Thread number: ",thread_no,
if format in movie_format:
print "Watched movie %s at %s: " % (list[i],ctime())
sleep(1)
elif format in music_format:
print "Listening music %s at %s: " % (list[i],ctime())
sleep(1)
else:
print "OOOps... Unknown file format:" ,list[i]
def thread_test():
thread.start_new_thread(player,(1,playlist1))
thread.start_new_thread(player,(2,playlist2))
sleep(20)
if __name__ == '__main__':
print "on going"
thread_test()
#playlist1=['lost.avi','功夫熊猫.rmvb','good.mp4','天空之城.rmvb','someone.rmvb','food.doc']
#playlist2=['silence.mp3','beyond.mp3','happy.mp3']
#player(1,playlist1)
#player(1,playlist2)
print "All finished: " , ctime()
2. 多线程--创建线程函数
#coding=utf-8
from time import ctime, sleep
import threading
count=0
playlist1=['lost.avi','功夫熊猫.rmvb','good.mp4','天空之城.rmvb','someone.rmvb','food.doc']
playlist2=['silence.mp3','beyond.mp3','happy.mp3']
movie_format=['avi','mp4','rmvb','rm','flv']
music_format=['mp3']
def player(thread_no,list):
l=len(list)
global count
local_count=0
for i in range(l):
count+=1
local_count+=1
print "global",count
print "local",local_count
format=list[i].split('.')[-1]
print "Thread number: ",thread_no,
if format in movie_format:
print "Watched movie %s at %s: " % (list[i],ctime())
sleep(1)
elif format in music_format:
print "Listening music %s at %s: " % (list[i],ctime())
sleep(1)
else:
print "OOOps... Unknown file format:" ,list[i]
def thread_test():
t1=threading.Thread(target=player,args=(1,playlist1))
t1.start()
t2=threading.Thread(target=player,args=(2,playlist2))
t2.start()
sleep(10)
if __name__ == '__main__':
print "on going"
thread_test()
#playlist1=['lost.avi','功夫熊猫.rmvb','good.mp4','天空之城.rmvb','someone.rmvb','food.doc']
#playlist2=['silence.mp3','beyond.mp3','happy.mp3']
#player(1,playlist1)
#player(1,playlist2)
print "All finished: " , ctime()
3.多线程--继承类
#coding=utf-8
import time
import threading
count=0
mylock=threading.RLock()
playlist1=['lost.avi','功夫熊猫.rmvb','good.mp4','天空之城.rmvb','someone.rmvb','food.doc']
playlist2=['silence.mp3','beyond.mp3','happy.mp3']
playlists=[playlist1,playlist2]
movie_format=['avi','mp4','rmvb','rm','flv']
music_format=['mp3']
def player(thread_no,list):
l=len(list)
global count
local_count=0
for i in range(l):
count+=1
local_count+=1
print "global",count
print "local",local_count
format=list[i].split('.')[-1]
print "Thread number: ",thread_no,
if format in movie_format:
print "Watched movie %s at %s: " % (list[i],time.ctime())
time.sleep(1)
elif format in music_format:
print "Listening music %s at %s: " % (list[i],time.ctime())
time.sleep(1)
else:
print "OOOps... Unknown file format:" ,list[i]
class mythread(threading.Thread):
def __init__(self,func,args):
threading.Thread.__init__(self)
self.func=func
self.args=args
def run(self):
threadname = threading.currentThread().getName()
print "Thread: ",threadname
apply(self.func,self.args)
if __name__=='__main__':
threads=[]
for i in range(2):
thread=mythread(player,(i+1,playlists[i]))
threads.append(thread)
for t in threads:
t.start()
time.sleep(20) #????为什么不添加休眠print先执行呢?
print "All finished!"
需要继续改进与学习
参考:
http://www.cnblogs.com/fnng/p/3670789.html
http://www.cnblogs.com/fnng/p/3691053.html
http://www.pythonclub.org/python-basic/threading