tomorrow 与 concurrent.futures 多线程比较

前言

  1. 现在有个需求是进行大批量文件copy,写完脚本,运行一下,发现速度实在太慢.
  2. 要优化只能加多线程,为了图方便,我第一时间想到的是tomorrow这个库.设置线程运行后,发现效率有所提升,但是感觉还是比较慢,最后使用pyton标准库concurrent.futures比较了一下.发现concurrent快好多.
  3. 话不多说,上代码.

实践

def test_path():
    pool = Pool(max_workers=5) // 设置线程池
    src = r'I:\wbdata\TA'
    dst = r'C:\Users\axzq\Desktop\新建文件夹\ta'
    for path in os.listdir(src):
        if not os.path.isdir(src+'\\'+path):
            print(f'{path}不是目录')
            continue
        Keyword = '申请表'
        if Keyword in str(os.listdir(src+'\\'+path)):
            new_src = src + '\\' + path + '\\' + Keyword
            if not os.path.exists(new_src):
                print(f'文件 or  目录不存在')
                continue
            for file in os.listdir(new_src):
                print(f'{new_src}\\{file} ----> {dst}')
                pool.map(copy1, (f'{new_src}\\{file}', dst)) //执行线程
    print('复制完成')
    
@threads(5) //使用tomorrow
def copy1(src, dst):
    try:
        shutil.copy(f'{src}', dst)
    except PermissionError:
        print(f'{src} 无权限...')

concurrent运行时间: 10.266663789749146
tomorrow运行时间: 18.670756340026855

结语

1.公司电脑,配置有点渣,
2.tomorrow是封装的concurrent,讲道理性能不应该差这么多,我个人感觉是因为使用装饰器的原因.在一个是没封装好.
3.Python装饰器本质是一个函数,通过闭包实现(应用外部变量的内部函数).
4.具体原因我也不知道,希望有懂得的同学,能指点一下原因.谢谢了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值