• 创建16x16二级hash目录


    Hash目录是一种优化文件存储性能的方法。无论是Windows还是Linux,无论是NTFS还是ext4,每个目录下所能容纳的项目数是有限的。并不是不能保存,而是当项目数量过大的时候,会降低文件索引速度,所以权衡一个目录下应该保存多少文件是很必要的。保存得多了会影响性能,保存得少了会造成目录太多和空间浪费。所以当保存大批文件的时候,需要有一种算法能将文件比较均匀地“打散”在不同的子目录下以提高每一级的索引速度,这种算法就是 Hash。通常用的MD5、sha1等都可以用来做Hash目录,我的mSession里也同样使用了MD5,取得sessionID的第一位和第九位,这就构成了两级Hash路径,也就是说,系统把所有的Session文件分散到了16×16=256个子目录下。假设Linux每个目录下保存1000个文件可以获得最好的空间性能比,那么系统在理想情况下可以同时有256000个session文件在被使用。

    #!/usr/bin/env python
    # coding=utf-8
    
    import os
    import sys
    
    mlist = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
    path = sys.argv[1:] or './'
    if type(path) is list and len(path) == 1: 
        path = path[0]
    elif type(path) is list and len(path) !=1:
        sys.stderr.write('  Usage: %s [path]
    ' % sys.argv[0])
        sys.exit(1)
    if not os.path.exists(path):
        os.makedirs(path)
    
    for level1 in mlist:
        if not os.path.exists('%s/%s' % (path, level1)):
            os.mkdir('%s/%s' % (path, level1))
        for level2 in mlist:
            if not os.path.exists('%s/%s/%s' % (path, level1, level2)):
                os.mkdir('%s/%s/%s' % (path, level1, level2))
  • 相关阅读:
    Python使用MySQL数据库的方法以及一个实例
    【转载】关于Python中的yield
    利用KMeans聚类进行航空公司客户价值分析
    Python多线程编程
    搜索与排名思路整理
    两个UIView添加同一个手势只有最后一个有用
    缩放动画效果
    iOS通过UIAlertController弹出底部选择框来调用相机或者相册
    ios webview点击图片看大图效果及相应手势操作
    iOS开发:获取设备IP地址
  • 原文地址:https://www.cnblogs.com/xiaoming279/p/6222003.html
Copyright © 2020-2023  润新知