一:进程池与线程池

提交任务的两种方式:

1、同步调用:提交完一个任务之后,就在原地等待,等任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行

2、异步调用:提交完一个任务之后,不是原地等待,而是直接执行下一行代码,会导致任务是并发执行的,结果future对象会在任务运行完毕后自动传给回调函数

 

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import time, random, os


def task(name, n):
    print('%s%s is running' % (name, os.path.getpid()))
    time.sleep(random.randint(1, 3))
    return n ** 2


if __name__ == '__main__':
    # print(os.cpu_count())
    p = ProcessPoolExecutor(4)

    l = []
    for i in range(5):
        # 同步提交
        # res = p.submit(task, '进程pid:', i).result()
        # print(res)

        # 异步提交
        future=p.submit(task,'进程pid:',i)
        l.append(future)

    p.shutdown(wait=True) # 关闭进程池的入口,并且在原地等待进程池内所有任务运行完毕

    for future in l:
        print(future.result)
    print('')
View Code

相关文章:

  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2019-09-19
  • 2019-03-03
猜你喜欢
  • 2022-12-23
  • 2022-01-09
  • 2022-01-05
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
相关资源
相似解决方案