进程池写:
from multiprocessing import Process, Array,Pool
import time
def f(x):
time.sleep(0.5)
print(x)
return x*x
if __name__ == '__main__':
pool = Pool(processes=2) #最多可以跑11个进程
res_list = []
start=time.time()
for i in range(100):
res = pool.apply_async(f,[i,]) #apply同步 apply_async异步
res_list.append(res)
for l in res_list:
#print(l)
#l.get(timeout=9) #超时apply_async
l.get() #超时apply_async
end=time.time()
print('the final',end-start)
线程写:
'''
#线程实现
import threading
import time
def f(x):
time.sleep(0.5)
print(x)
return x*x
if __name__ == '__main__':
start = time.time()
for i in range(100):
t1=threading.Thread(target=f,args=(i,))
t2 = threading.Thread(target=f, args=(i,))
t1.start()
t2.start()
#f(i)
end=time.time()
print('the final', end - start)
'''
协程写:
#协程
import time
def f(x):
time.sleep(0.5)
yield(x)
return x*x
# if __name__ == '__main__':
# start = time.time()
# for i in range(100):
# t1=threading.Thread(target=f,args=(i,))
# t2 = threading.Thread(target=f, args=(i,))
# t1.start()
# t2.start()
# #f(i)
# end=time.time()
# print('the final', end - start)
if __name__ == '__main__':
start = time.time()
for i in range(100):
x1=f(i)
next(x1)
end=time.time()
print('the final', end - start)
不用的
#from multiprocessing import Process, Array,Pool
import time
def f(x):
time.sleep(0.5)
print(x)
return x*x
if __name__ == '__main__':
start = time.time()
for i in range(100):
f(i)
end=time.time()
print('the final', end - start)