python threading模块
两种创建多线程方式:
1、创建threading.Thread实例
threading.Thread(group=None,target=None,name=None,args=(),kwargs=None,*,demon=None)
group现在用不到,始终为None;target是该线程运行的函数名;args是该函数以元组形式传入的参数;kwargs是函数以字典形式传入的关键字参数;name为该线程的名字,以便之后查询用
from threading import Thread
def f(num):
print('这是第%d个线程\n'%num)
tds = [] #创建一个空间,以存储所有线程
for i in range(1,10):
td = Thread(target=f,args=(i,))
tds.append(td)
for td in tds:
tds.start() #启动所有线程
for td in tds:
td.join() #将所有线程join到主线程中,以保证所有线程运行完了之后再继续主线程
2、创建threading.Thread子类,重写类的run方法
from threading import Thread
class NewThread(Thread):
def __init__(self,func,arg): #指定此类需要传入的参数
super().__init__()
self.func = func
self.arg = arg
def run(self):
return self.fun(self.arg)
def f(num):
print('这是第%d个线程'%num)
tds = []
for i in range(1,10):
td = NewThread(f,i)
tds.append(td)
for td in tds:
td.start()
for td in tds:
td.join()
创建Thread的子类,可以自定义实例化时传入的参数,并可通过重写run方法来改变线程的运行