python并发处理concurrent.futures

来源:互联网 发布:想做淘宝主播要培训吗 编辑:程序博客网 时间:2024/05/20 14:25

import concurrent.futures
import time

声明数组列表
num_list=range(1,11)

声明一个计数函数
def count(n):
 for i in range(10000):
 i+=i
 return i*n

声明一个工作函数
def work(x):
 result=count(x)
 print(‘{}的计算结果是{}’.format(x,result))

声明按照顺序工作的函数
def sequence():
 start_time=time.clock()
 for i in num_list:
  work(i)
 print(‘运行时间为{}’.format(time.clock-start_time))

声明多线程工作的方法
def thread_exe():
 start_time=time.clock()
 with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
  for i in num_list:
   executor.submit(work,i)
  print(‘运行时间为{}’.format(time.clock-start_time))

声明多进程工作的方法
def multiprocess_exe():
 start_time=time.clock()
  with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
   for i in num_list:
    executor.submit(work,i)
   print(‘运行时间为{}’.format(time.clock-start_time))

if name == ‘main‘:
分别运行
 sequence()
 thread_exe()
 multiprocess_exe()

sequence的运行结果
1计算的结果是19999998
2计算的结果是39999996
3计算的结果是59999994
4计算的结果是79999992
5计算的结果是99999990
6计算的结果是119999988
7计算的结果是139999986
8计算的结果是159999984
9计算的结果是179999982
10计算的结果是199999980
计算的时间:4.653966205959382

thread_exe的运行结果
2计算的结果是39999996
4计算的结果是79999992
3计算的结果是59999994
1计算的结果是19999998
5计算的结果是99999990
6计算的结果是119999988
8计算的结果是159999984
7计算的结果是139999986
10计算的结果是199999980
9计算的结果是179999982
计算的时间4.656093410957656

mutiprocessing_exe的运行结果
1计算的结果是19999998
3计算的结果是59999994
4计算的结果是79999992
6计算的结果是119999988
7计算的结果是139999986
8计算的结果是159999984
2计算的结果是39999996
5计算的结果是99999990
9计算的结果是179999982
10计算的结果是199999980
计算的时间1.5563637145214544

多线程处理io密集型
多进程处理 计算密集型

原创粉丝点击