您的位置:首页 > 编程语言 > Python开发

python多线程实例

2015-09-04 15:45 567 查看

1、线程创建的三种方法

a、创建一个Thread的实例,传给他一个函数
import threading
from time import sleep
def thread_body(arg1,arg2):
print "i am a child thread",arg1,arg2
sleep(10)
print "end child thread"

def main():
print "____main_____start:"
thread_target=threading.Thread(target=thread_body,args=("hello","test"))
print "child start"
thread_target.start()
print "i am main thread"
thread_target.join()
print "end_main"

if __name__=='__main__':
main()


b、创建一个Thread的实例、传给他一个可以调用的类对象
import threading
from time import sleep
def thread_body(arg1,arg2):
print "i am a child thread",arg1,arg2
sleep(10)
print "end child thread"

class thread_class(object):
def __init__(self,func,args,name=''):
self.func=func
self.name=name
self.args=args
def __call__(self):
apply(self.func,self.args)

def main():
print "____main_____start:"
#  thread_target=threading.Thread(target=thread_body,args=("hello","test"))
thread_target=threading.Thread(target=thread_class(thread_body,("hello",'world'),"child_test"))
print "child start"
thread_target.start()
print "i am main thread"
thread_target.join()
print "end_main"

if __name__=='__main__':
main()


c、从Thread派生出一个子类、创建一个子类的实例。
import threading
from time import sleep
def thread_body(arg1,arg2):
print "i am a child thread",arg1,arg2
sleep(2)
print "end child thread"

class thread_child(threading.Thread):
def __init__(self,func,args,name=''):
threading.Thread.__init__(self)
self.name=name
self.args=args
self.func=func
def getResult(self):
return self.res
def run(self):
print 'child run'
self.res=apply(self.func,self.args)

def main():
print "____main_____start:"
thread_target=thread_child(thread_body,("hello","world"),"test")
print "child start"
thread_target.start()
print "i am main thread"
thread_target.join()
print "end_main"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: