当前位置:首页 > 云计算 > 正文内容

Python如何生成线程

2022-05-04 03:02:05云计算2

Python中有两个线程模块,分别是thread和threading,threading是thread的升级版。threading的功能更强大。

创建线程有3种方法:

1、thread模块的start_new_thread函数

2、继承自threading.Thread模块

3、用theading.Thread直接返回一个thread对象,然后运行它的start方法

方法一、thread模块的start_new_thread函数

其函数原型:

start_new_thread(function,atgs[,kwargs])

其参数含义如下:

function:在线程中执行的函数名
args:元组形式的参数列表。
kwargs:可选参数,以字典的形式指定参数(即对一些参数进行指定初始化)

代码

importthread

defhello(id=0,interval=2):
foriinfilter(lambdax:x%interval==0,range(10)):
print"Threadid:%d,timeis%d\n"%(id,i)

if__name__=="__main__":

#thread.start_new_thread(hello,(1,2))这种调用形式也是可用的
#thread.start_new_thread(hello,(2,4))

thread.start_new_thread(hello,(),{"id":1})
thread.start_new_thread(hello,(),{"id":2})

方法二:继承自threading.Thread模块

注意:必须重写run函数,而且想要运行应该调用start方法

importthreading

classMyThread(threading.Thread):

def__init__(self,id,interval):
threading.Thread.__init__(self)

self.id=id
self.interval=interval

defrun(self):
forxinfilter(lambdax:x%self.interval==0,range(10)):
print"Threadid:%dtimeis%d\n"%(self.id,x)

if__name__=="__main__":
t1=MyThread(1,2)
t2=MyThread(2,4)

t1.start()
t2.start()

t1.join()
t2.join()

方法三:用theading.Thread直接返回一个thread对象,然后运行它的start方法

importthreading

defhello(id,times):
foriinrange(times):
print"hello%stimeis%d\n"%(id,i)

if__name__=="__main__":
t=threading.Thread(target=hello,args=("hawk",5))
t.start()

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/4056.html

标签: Python