协程:
sinstance (对象 类型 ) 判断是否是 只当类型
ininstance ( [1,3,5] , Iterable )
自定义可迭代对象:
next 启动生成器
send 启动生成器 ( 第一次不能传参数 )
a = 函数( )
b = next ( a )
b = a.send (参数 )
自定义迭代器对象 :
有 _iter__ 函数
有迭代器
有 iter 函数 有 next 函数
协程 greenlet
a = greenlet.greenlet(函数名)
ea.switch ( )
b = greenlet . getcurrent 获取当前的协程对象
pip3 install gevent
gecent 协程
gevent . sleep (0.2) 必须用本 耗时操作
a = gevent . spawnn ( 函数名)
print (a)
a.join() 主线程 等待 线程
网络模块:
import urllib.request
a = urllib.request.urlopen ( 变量)
读取网络资源数据:
a.read ()
等待所有协程完成:
a .joinall ( a,b,c)
正则表达式 模块: re
变量. group ( )
import greenlet
import time
def work1():
for i in range(3):
print("work1工作中...")
time.sleep(0.2)
g2.switch()
def work2():
for i in range(3):
print("work2工作中...")
time.sleep(0.2)
g1.switch()
g1 = greenlet.greenlet(work1)
g2 = greenlet.greenlet(work2)
if __name__ == '__main__':
print(g1, g2)
g1.switch()

import gevent
import time
from gevent import monkey
monkey.patch_all()
def task1():
print("task1:", gevent.getcurrent())
for i in range(3):
print("task1执行中...")
time.sleep(0.2)
def task2():
print("task2:", gevent.getcurrent())
for i in range(3):
print("task2执行中...")
time.sleep(0.2)
if __name__ == '__main__':
g1 = gevent.spawn(task1)
g2 = gevent.spawn(task2)
while True:
time.sleep(0.2)

import gevent
import urllib.request
from gevent import monkey
monkey.patch_all()
def download_img(img_url, img_name):
print(gevent.getcurrent())
try:
response = urllib.request.urlopen(img_url)
with open(img_name, "wb") as img_file:
while True:
img_data = response.read(1024)
if img_data:
img_file.write(img_data)
else:
break
except Exception as e:
print("下载网络图片出现异常:", e)
else:
print("图片下载成功:", img_name)
if __name__ == '__main__':
img_url1 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=812586171,724963760&fm=27&gp=0.jpg"
img_url2 = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1293860636,1088191402&fm=27&gp=0.jpg"
img_url3 = "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2011032701,3112503813&fm=27&gp=0.jpg"
g1 = gevent.spawn(download_img, img_url1, "1.jpg")
g2 = gevent.spawn(download_img, img_url2, "2.jpg")
g3 = gevent.spawn(download_img, img_url3, "3.jpg")
print(g1, g2, g3)
gevent.joinall([g1, g2, g3])
