python并发编程_python并发编程-gevent使用大全

一、gevent实现某函数异步并发

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

# Date: 2019/11/30

# Author: SunXiuWen

"""pip install -i https://pypi.douban.com/simple/ gevent"""

import time

import gevent

from gevent import monkey

monkey.patch_all()

def task(i):

time.sleep(3)

print(i)

def work():

g_list = [gevent.spawn(task, i) for i in range(10)]

gevent.joinall(g_list)

return [i.value for i in g_list]

if __name__ == '__main__':

start = time.time()

ret = work()

end = time.time() - start

print(ret, '\n', end)

"""结论:

如果不配置monkey,则是阻塞状态,要花费30秒左右,且导入gevent模块必须在一个模块中

"""

工作应用:如爬虫,下载是一个函数f1,解析是一个函数f2,都通过spawn住,然后通过gevent.joinall([gevent.spawn(f1),gevent.spawn(f2)])从而实现协程并发!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值