首页 > 系统相关 >python进程之进程池、线程池与异步回调机制

python进程之进程池、线程池与异步回调机制

时间:2022-12-27 11:23:54浏览次数:35  
标签:__ task 20 python 线程 进程 返回值 pool

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

# 1. 产生含有固定数量线程的线程池
# t_pool = ThreadPoolExecutor()  # 默认线程数(max_workers = min(32, (os.cpu_count() or 1) + 4))
t_pool = ThreadPoolExecutor(20)  # 产生有20个线程的线程池
p_pool = ProcessPoolExecutor(5)


def task():
    print('task is running')
    time.sleep(random.randint(1, 3))
    print('task is over')
    return 'task函数返回值'


def func(a):
    print(f'我拿到返回值了>>>:{a.result()}')


# 2.将任务提交给线程池
for i in range(200):  # 定义200个任务
    t_pool.submit(task)  # 将任务交给线程池

# 3. 将任务提交给进程池
# 执行过程中,可以按到程序是一波一波的运行,每一波就是你定义进程的数量
if __name__ == '__main__':
    for i in range(20):
        p_pool.submit(task)

# 4.要获得函数运行结果的返回值
if __name__ == '__main__':
    for i in range(20):
        # 将task函数返回值传给func函数,func函数拿到返回值可以去干别的事去了
        p_pool.submit(task).add_done_callback(func)  # 异步回调机制

标签:__,task,20,python,线程,进程,返回值,pool
From: https://www.cnblogs.com/smyz/p/17007658.html

相关文章

  • Python学习笔记:几个有趣小栗子
    一、打印九九乘法表1.方法一#九九乘法表foriinrange(1,10):forjinrange(1,i+1):print(str(j),'*',str(i),'=',str(j*i),end='\t')......
  • python连接mysql数据库(2)——批量插入数据
      1、需要插入多条数据,一天一条,time的格式为yyyy-mm-dd00:00:00使用pandas插件包,取某一段时间的日粒度,然后进行日期格式化,使用strftime   2、每条开头有唯......
  • python线程之event事件
    fromthreadingimportThread,Eventimporttimeevent=Event()deflight():print('红灯亮着,所有车都要等待')time.sleep(3)print('绿灯亮了,可以出......
  • 极客编程python入门-slots功能
    使用__slots__如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加​​name​​和​​age​​属性。classStudent(object):__slots__=('name','age')#......
  • Python爬虫实战,requests+tqdm模块,爬取漫画之家漫画数据(附源码)
    前言今天给大家介绍的是Python爬取漫画数据,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求......
  • 数据库工具类封装(Pymysql)-python编写
    importpymysql#封装数据库工具类classDBUtil(object):#添加类属性conn=None@classmethoddef__get_conn(cls):#判断conn是否......
  • 基于pybind11实现Python调用c++编写的CV算法--上(Windows+VS)
    C++是一种编译型(compiled)语言,设计重点是性能、效率和使用灵活性,偏向于系统编程、嵌入式、资源受限的软件和系统。Python是一种解释型(interpreted)语言,同样也支持不同的......
  • 8.多线程
    一、基本概念:程序、进程、线程程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正......
  • 电脑面试两道问题(python+shell)
    最近面试电脑代码面试遇到两个问题,供大家参考一下一、python脚本:手写一个函数,实现两个数相加,并使用unittest与pytest工具测试函数正确性。1.unnitest进行测试:importun......
  • 多线程
    多线程什么是进程?什么是线程?进程是一个应用程序(1个进程是一个软件)。线程是一个进程中的执行场景/执行单元。一个进程可以启动多个线程。对于java程序来说,当在DOS命令......