1. 多进程
本段代码教你使用多进程模块multiprocessing,定义了func(里面sleep两秒,比较耗时),你只需要修改功能函数即可用来做你的任务。对同一任务,用多进程和不用多进程进行了比较,应用速度会得到明显提升。
#coding:UTF-8
import multiprocessing
import time
from tqdm import tqdm
class MyMultiprocess(object):
def __init__(self, process_num):
self.pool = multiprocessing.Pool(processes=process_num)
def work(self, func, args):
result = []
for arg in args:
result.append(self.pool.apply_async(func, (arg,)))
self.pool.close()
self.pool.join()
finally_result = []
for res in result:
finally_result.append(res.get())
return finally_result
def func(num):
"""
功能函数
"""
for i in tqdm(range(10)):
time.sleep(2)
return num*num
if __name__ == "__main__":
start = time.time()
mymultiprocess = MyMultiprocess(5)
res = mymultiprocess.work(func, [1,2,3,4,5])
print(res)
end = time.time()
print("应用多进程耗时: %s" % (end-start))
start = time.time()
res = []
for i in range(1, 6):
j = func(i)
res.append(j)
print(res)
end = time.time()
print("不用多进程耗时: %s" % (end-start))
运行结果:

2. 多线程
本段代码教你使用多线程模threading,定义了func(里面sleep两秒,比较耗时),你只需要修改功能函数即可用来做你的任务。对同一任务,用多线程和不用多线程进行了比较,应用速度会得到明显提升。
import threading
import time
from tqdm import tqdm
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):
try:
return self.result
except Exception:
return None
def func(num):
"""
功能函数
"""
for i in tqdm(range(10)):
time.sleep(2)
return num*num
if __name__ == "__main__":
start = time.time()
threads = []
results = []
for i in [1,2,3,4,5]:
t = MyThread(func, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
results.append(t.get_result())
print(results)
end = time.time()
print("应用多线程耗时: %s" % (end-start))
start = time.time()
results = []
for i in [1,2,3,4,5]:
result = func(i)
results.append(result)
print(results)
end = time.time()
print("不用多线程耗时: %s" % (end-start))
运行结果:

就是这么简单,放心使用吧!!!
多进程更简单的使用方法:https://blog.youkuaiyun.com/Guo_Python/article/details/117947284