python实现golang sync.WaitGroup类似功能

golang控制并发最常用的就是sync.WaitGroup那一套

现在使用python gevent实现类似功能 也是基于协程

劣势在于python不能利用多核CPU, 而且是非抢占式调度

举一个比较常见的用例, 循环执行一个函数, 并发执行

from gevent import monkey

monkey.patch_all()
import time
import gevent


class Strategy:
    def produce(self):
        tasks = [
            gevent.spawn(self.produce_data, symbol) for symbol in range(10)
        ]
        gevent.joinall(tasks)

    def produce_data(self, symbol):
        print("begin", symbol)
        time.sleep(2)
        print("end", symbol)


def run():
    startTime = time.time()
    strategy = Strategy()
    strategy.produce()
    print(time.time() - startTime)


if __name__ == "__main__":
    run()

posted @ 2021-08-30 15:49  布里塔  阅读(278)  评论(0编辑  收藏  举报