python 线程池和进程池例子
python 线程池和进程池例子
Tips: 风扇可能会呼呼响
import difflib
import random
import os
from concurrent.futures import ThreadPoolExecutor, wait, ProcessPoolExecutor
import time
import traceback
def spend_time(f):
def wrapper(*args):
start = time.time()
f(*args)
end = time.time()
print("%s spend %ss" %(f.__name__, end - start))
return wrapper
def fn():
s1 = '''
比较 fromlines 和 tolines (字符串列表) 并返回一个字符串,表示一个完整 HTML 文件,其中包含各行差异的表格,行间与行外的更改将突出显示。'''.split('\n')
s2 = '''比较 fromlines 和 tolines (字符串列表) 并返回一个字符串,表示一个完整 HTML 文件,其中包含各行差异的表格,行间与行外的更改将突出显'''.split('\n')
d = difflib.HtmlDiff()
filename = os.path.join(os.path.dirname(__file__),'diff%s.html' % random.randint(1,1000000))
# print(filename)
with open(filename, 'w') as f:
f.write(d.make_file(s1, s2))
os.remove(filename)
@spend_time
def ex1(n):
tasks = []
ex = ThreadPoolExecutor()
for i in range(n):
tasks.append(ex.submit(fn))
wait(tasks)
@spend_time
def ex0(n):
for i in range(n):
fn()
@spend_time
def ex2(n):
tasks = []
ex = ProcessPoolExecutor()
for i in range(n):
tasks.append(ex.submit(fn))
wait(tasks)
if __name__ == "__main__":
try:
# s
n = 50000
ex0(n)
ex1(n)
ex2(n)
except:
print(traceback.format_exc())