多线程threading
多线程模块threading,用threading.Thread(target=函数名)创建一个多线程实例,调用实例的start()方法时创建子线程:
import time
import threading
def test():
for i in range(5):
print(i)
time.sleep(1)
a = threading.Thread(target=test)
b = threading.Thread(target=test)
a.start()
b.start()
可以创建一个类,使它继承threading.Thread,那么可以创建一个此类的实例,实例可以调用start()方法,但是注意,类中的方法名必须是run,因为start方法会自动调用run方法:
import time
import threading
class aa(threading.Thread):
def run(self):
for i in range(5):
print("hello")
time.sleep(1)
w = aa()
w.start()
再来一个例子,当一个函数比较复杂,可以用多个函数实现,然后封装到一个类中,就可以用此类继承threading.Thread,然后创建类实例后,调用类实例的start()方法,start()方法则调用类实例中的run()方法,以此来创建子线程:
import time
import threading
class test(threading.Thread):
def __init__(self,name):
super().__init__()
self.name = name
def run(self):
print(self.name)
w = test("xiaoming")
w.start()
创建了多个线程之后,线程的执行并不一定是按顺序的
创建一个多线程实例:xxx = threading.Thread(target=xxx, args=(xxx,)),target=xxx,xxx是要创建线程的函数名,args=(xxx,),args中的xxx是函数中的参数,args接收的是一个元组,所以如果只有一个参数的时候,需要在后面加个逗号:
import threading
def test(haha):
print(haha)
a = threading.Thread(target=test,args=("abc",))
a.start()
至于使用类继承多线程,参数传递没有什么不同,如下:
import threading
class test(threading.Thread):
def __init__(self,name):
super().__init__()
self.name = name
def run(self):
print(self.name)
a = test("xiao")
a.start()

浙公网安备 33010602011771号