在python3中,我们使用threading模块来支持多线程。
- t1=threading.Thread(target=run,args=("t1",)) 创建一个线程实例
- t1.start() 启动这个线程实例
- t1.join() 不加join的话,主线程和子线程完全是并行的,加了join主线程得等这个子线程执行完毕,才能继续往下走。这样才能得到这个程序真正的运行时间。
import threading,time
def run(n):
print("task ",n)
time.sleep(2)
start_time=time.time()
t1=threading.Thread(target=run,args=("t1",))
t2=threading.Thread(target=run,args=("t2",))
t1.start()
t2.start()
t1.join()
t2.join()
print(time.time()-start_time)
打印结果:
task t1 task t2 2.0011146068573
观察实验结果,我们得到原本需要4s左右的执行时间变成了2秒,证明了多线程的高效率。参考文章:python之多线程 - 简书进程的概念:以一个整体的形式暴露给操作系统管理,里面包含各种资源的调用。 对各种资源管理的集合就可以称为进程。线程的概念:是操作系统能够进行运算调度的最小单位。本质上就是一串...https://www.jianshu.com/p/a4aedd66af7c
实例二:获取threading多线程的return返回值
import threading, time
# 定义一个MyThread.py线程类
class MyThread(threading.Thread):
def __init__(self, func, args=()):
super(MyThread, self).__init__()
self.func = func
self.args = args
def run(self):
self.result = self.func(*self.args)
def get_result(self):
threading.Thread.join(self) # 等待线程执行完毕
try:
return self.result
except Exception:
return None
def run(n):
print("task ",n)
time.sleep(2)
return "task "+n
start_time=time.time()
t1 = MyThread(func=run, args=("t1",))
t2 = MyThread(func=run, args=("t2",))
t1.start()
t2.start()
t1.join()
t2.join()
print(time.time()-start_time)
print(t1.get_result())
print(t2.get_result())
打印结果:
task t1 task t2 2.0050857067108154 task t1 task t2
参考内容:python获取threading多线程的return返回值_xpt211314的博客-CSDN博客https://blog.csdn.net/xpt211314/article/details/109543014



