python threading
并发:
一边看电视玩手机,一下只能运行一个,交替运行
并行:
一边开车一边听音乐,能同时往一个地方
进程:
运行一个饿了么app
线程:
多个用户同时下订单
GIL锁:
将线程作为并发处理
class MyThread(threading.Thread):
"""
创建一个并行任务
func 添加并行任务的函数名
args 是需要传进来的参数
get_result 获取线程运行后返回的任务结果
"""
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
# 单例
thread = MyThread(func, args=(1,))
thread.start() # 启动线程
thread.join() # 当线程运行完了才运行主进程
# 多例
thread_list = []
for func in func_list:
thread = MyThread(func, args=(1,))
thread_list.append(thread) # 在列表里面添加所有运行的线程
for thread in thread_list:
thread.start() # 将列表中的线程全部启动
for thread in thread_list:
thread.join() # 所有线程运行完才运行主进程```