免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2156 | 回复: 1
打印 上一主题 下一主题

python多线程处理文件备份 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-23 15:02 |只看该作者 |倒序浏览
本帖最后由 昜羊 于 2016-05-23 15:20 编辑

原来的代码都是单线程执行的,效率太低。想用多线程改进提高效率,但完全没写过多线程的程序。。。
现在我的目的是这样:执行备份的时候,在计算md5部分的时候,进行多线程一起处理,增加效率
有一段代码是执行计算文件md5值的,有一段是实行备份的。有一段代码是生成线程的。望各位高手赐教

import os,hashlib,cPickle,multiprocessing

filesDir = '/root'

def md5sum(fname):
    m = hashlib.md5()
    with open(fname) as f:
        while True:
            data = f.read(4096)
            if len(data) == 0:
                break
            m.update(data)
    return m.hexdigest()

def Backup():
    md5Dict = {}
    os.chdir(filesDir)
    timer = time.strftime('%Y-%m-%d_%H-%M')
    tar = tarfile.open('%s/full_%s.tar.gz' % (tarDir,timer) , 'w:gz')
    for (r ot,dirs,files) in os.walk('.'):
        for i in files:
            filesname = os.path.join(root,i)
            md5 = md5sum(filesname)
            tar.add('%s' % filesname)
            md5Dict[filesname] = md5
    with open('%s/md5.data' % md5Dir, 'w') as md5:
        cPickle.dump(md5Dict,md5)
    tar.close()

def mult():
    record = []
    for i in xrange(2):
        process = multiprocessing.Process(target=work,args=(i,))
        record.append(process)
        process.start()

论坛徽章:
0
2 [报告]
发表于 2016-05-23 17:26 |只看该作者
有大神在么?????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP