Python gevent高并发(限制最大并发数、协程池)
生活随笔
收集整理的這篇文章主要介紹了
Python gevent高并发(限制最大并发数、协程池)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實例源碼
import time import gevent from gevent.pool import Pool from gevent import monkey monkey.patch_all()class ABC(object):def __init__(self):# 一,限制最大并發(fā)數(shù)self.p = Pool(20)self.results = Noneself.num = 5# 二,導入gevent猴子補丁,沒有它,協(xié)稱就不會并發(fā)執(zhí)行# 三,耗時任務或者阻塞任務,異步執(zhí)行的或者需要并發(fā)的就是它了def task(self, i, num):time.sleep(i)self.num += 1self.results = self.numprint("sum = {}".format(self.num))def run(self):time_l=time.time()# 四,任務派發(fā),將15個任務派發(fā)給攜程去做threads = [self.p.spawn(self.task, 5, self.num) for i in range(40)]# 五,在此阻塞,等所有協(xié)程全部完成退出,這一步才執(zhí)行完gevent.joinall(threads)time_r=time.time()print("總耗時:{}".format(time_r-time_l))if __name__ == "__main__":abc = ABC()abc.run()print(abc.results)結果:
sum = 6 sum = 7 sum = 8 sum = 9 sum = 10 sum = 11 sum = 12 sum = 13 sum = 14 sum = 15 sum = 16 sum = 17 sum = 18 sum = 19 sum = 20 sum = 21 sum = 22 sum = 23 sum = 24 sum = 25 sum = 26 總耗時:15.019743204116821 26?
總結
以上是生活随笔為你收集整理的Python gevent高并发(限制最大并发数、协程池)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VulnHub靶机系列:Os-ByteS
- 下一篇: python - 获取时间戳(10位和1