创建多线程
方法一:继承Thread类,并重写run()方法
import threading
import time
class MyThread(threading.Thread):
def __init__(self, thread_name):
# 注意:一定要显式的调用父类的初始化函数。
super(MyThread, self).__init__(name=thread_name)
def run(self):
time.sleep(1)
print("%s正在运行中......" % self.name)
if __name__ == '__main__':
for i in range(10):
MyThread("thread-" + str(i)).start()
运行结果截图:
方法二:在实例化threading.Thread对象的时候,将线程要执行的任务函数作为参数传入线程
import threading
import time
def show(arg):
time.sleep(1)
print('thread '+str(arg)+" running....")
if __name__ == '__main__':
thread_list = []
for i in range(10):
t = threading.Thread(target=show, args=(i,))
t.start()
thread_list.append(t)
for t in thread_list:
t.join() # 子线程全部加入,主线程等所有子线程运行完毕
运行结果截图:
import threading
import time
def show(arg):
time.sleep(1)
print('thread '+str(arg)+" running....")
if __name__ == '__main__':
for i in range(10):
t = threading.Thread(target=show, args=(i,))
t.start()
t.join()
t.join()的作用为等待子线程执行完毕,运行结果截图,变成单线程运行结果:
注意下方实例化线程对象的参数与方法二中第一个程序的区别,其运行结果仍旧是单线程的执行结果
import threading
import time
def show(arg):
time.sleep(1)
print('thread '+str(arg)+" running....")
if __name__ == '__main__':
thread_list = []
for i in range(10):
t = threading.Thread(target=show(i))
t.start()
thread_list.append(t)
for t in thread_list:
t.join() # 子线程全部加入,主线程等所有子线程运行完毕