python实现golang sync.WaitGroup类似功能

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

现在使用python gevent实现类似功能

至于async, await那一套 需要递归写下去, 很烦, 遂放弃

差距在于python不能利用多核, 只是可以让cpu在遇到io操作的时候做点其他的事, 减少总io时间

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

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()

原文地址:https://www.cnblogs.com/chendongblog/p/15206315.html