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