封装了一个python线程池函数,直接调用跑多线程,适合跑爬虫

ThreadPoolExecutor已经是一个很完善的多线程池的库了,不过在项目里面老是重复判断list的长度来设置线程数,每次各个地方去修改真的是太麻烦了。

想要根据参数的长度动态控制线程的的数量,同时实现配置全局化,所以又封装成了一个函数,直接调用并传入多线程函数和参数list即可,适合我这样的懒人使用~

from concurrent.futures import ThreadPoolExecutor  # 多线程库

'''
author:LancerWu
email:wuxs231@163.com
'''

def multiprocess(func, query_list):
    '''
    多线程函数
    :param func: 执行函数
    :param query_list: 参数组成的list
    :return:
    '''
    try:
        length = len(query_list)  # 统计list长度,用来安排线程数
        nums = 4  # 默认4个线程
        if length < nums:
            if length == 0:
                return print('list为空')
            else:
                n = length
        else:
            n = nums

        # 多线程执行
        with ThreadPoolExecutor(n) as executor:
            executor.map(func, query_list)
        print('done')

    except Exception as e:
        print('error:%s' % e)
        return None


def test_func(n):
    print(n)


if __name__ == "__main__":
    # 构造作为参数的list
    test_list = [i for i in range(20)]
    # 多线程运行,会打印出list中的数值
    multiprocess(test_func, test_list)

源码地址:
https://github.com/wuxs231/python_scripts

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值