zoukankan      html  css  js  c++  java
  • concurent.furtrue实现进程池与线程池

    一、concurent.furtrue模块

    1 # 导入进程池类
    2 from concurrent.futures import ProcessPoolExecutor
    3 
    4 # 导入线程池类
    5 from concurrent.futures import ThreadPoolExecutor

    二、框架结构

    三、示例代码:

     1 # 进程池
     2 from concurrent.futures import ProcessPoolExecutor
     3 import os
     4 import time,random
     5 
     6 def task(n):  # 定义要做的事情
     7     print('%s is running '%os.getpid())
     8     time.sleep(random.randint(1,3))
     9     return n**2
    10 
    11 if __name__ == '__main__':
    12     p = ProcessPoolExecutor(max_workers=4)  # 创建一个进程池,max_workers可不写。
    13     l = []
    14     for i in range(10):
    15         obj = p.submit(task,i)  # 想进程池提交10个任务,task的参数是i
    16         l.append(obj)
    17     p.shutdown()     # 等到进程池中的任务都运行完毕。相当于之前的p.close()+p.join()
    18     print('=='*30)
    19     print([obj.result() for obj in l ])
     1 # 线程池
     2 from concurrent.futures import ThreadPoolExecutor
     3 import os
     4 import time,random
     5 
     6 def task(n):
     7     print('%s is running '%os.getpid())
     8     time.sleep(random.randint(1,3))
     9     return n**2
    10 
    11 if __name__ == '__main__':
    12     start = time.time()
    13     p = ThreadPoolExecutor(max_workers=20)  # 不写的话,默认是当前机器CPU个数的5倍,
    14     l = []
    15     for i in range(100):
    16         obj = p.submit(task,i)
    17         l.append(obj)
    18     p.shutdown()
    19     print('=='*30)
    20     print([obj.result() for obj in l ])
    21     print(time.time()-start)

    p.map()方法的用法

     1 from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
     2 import os,time,random
     3 def task(n):
     4     print('%s is running' %os.getpid())
     5     time.sleep(2)
     6     return n**2
     7 
     8 
     9 if __name__ == '__main__':
    10     p=ProcessPoolExecutor()
    11     obj=p.map(task,range(10))  # 提交任务
    12     p.shutdown()
    13     print('='*30)
    14     print(list(obj))
  • 相关阅读:
    Linux网络编程--socket
    UDP学习总结
    TCP协议学习总结
    DNS协议总结
    DHCP协议总结
    ARP协议总结
    二层协议--MPLS协议总结
    二层协议--LLDP协议总结
    二层协议--LACP协议总结
    二层协议--STP协议总结
  • 原文地址:https://www.cnblogs.com/fengqing89/p/7458855.html
Copyright © 2011-2022 走看看