python实现简易版本mapReduce

定义Cal类,通过map实现归类,reduce实现聚合。最后通过多线程演示了mapReduce计算过程。

from threading import Thread


class Cal(object):
    def __init__(self, start, end):
        self.result = 0
        self.start = start
        self.end = end

    def map(self):
        for i in range(self.start, self.end):
            self.result += i

    def reduce(self, other):
        self.result += other.result


def generate_worker(data):
    for index in range(1, len(data)):
        cal = Cal(data[index-1], data[index])
        yield cal

def generate_threads(workers):
    for worker in workers:
        thread = Thread(target=worker.map)
        thread.start()
        yield thread


def main():
    # [1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101]
    data = [item for item in range(1, 102, 10)]

    workers = list(generate_worker(data))
    threads = list(generate_threads(workers))

    for thread in threads:
        thread.join()

    start = workers[0]
    for worker in workers[1:]:
        start.reduce(worker)

    assert start.result == 5050


if __name__ == '__main__':
    main()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值