python--pool

1.进程池


进程池技术的应用至少由以下两部分组成:

资源进程:

预先创建好的空闲进程,管理进程会把工作分发到空闲进程来处理。

管理进程:

管理进程负责创建资源进程,把工作交给空闲资源进程处理,回收已经处理完工作的资源进程。
上面资源进程跟管理进程的概念很好理解,下面就是进程池的关键,管理进程如何有效的管理资源进程,分配任务给资源进程,回收空闲资源进程,管理进程要有效的管理资源进程,那么管理进程跟资源进程间必然需要交互,通过IPC,信号,信号量,消息队列,管道等进行交互。

2.代码


import os
import multiprocessing
import hashlib

#BUFERSIZE:读取缓冲区大小
#Poolsize:工作进程数量

BUFSIZE=8192
POOLSIZE=2
def compute_digest(filename):
    try:
        f=open(filename,'rb')
    except IOError:
        return None
    digest=hashlib.sha512()
    while True:
        chunk=f.read(BUFSIZE)
        if not chunk:break
        digest.update(chunk)
    f.close()
    return filename,digest.digest()
def build_digest_map(topdir):
    digest_pool=multiprocessing.Pool(POOLSIZE)
    allfiles=(os.path.join(path,name) for path,dirs,files in os.walk(topdir) for name in files )
    digest_map=dict(digest_pool.imap_unordered(compute_digest,allfiles,20))                                           
    digest_pool.close()
    return digest_map

if __name__=='__main__':
    digest_map=build_digest_map(r'F:\Anaconda3\Lib\site-packages\sklearn')
    print(len(digest_map))
multiprocesssing.Pool.imap_unordered(func,iterable,[,chunksize])

返回迭代器而非结果列表,与imap的区别在于结果的顺序根据从工作进程接受到的时间任意确定。

hashlib:摘要算法

摘要算法在很多地方都有广泛的应用。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。
python中hashlib有MD5,SHA1,SHA126,SHA256等
关于哈希算法参见廖雪峰大神的blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS 数据栈

谢谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值