要工作的事情,要干的事情,要处理的事情可以创建一个进程或者线程。
每个线程或者进程都坐着相同的事情,或者不相同的事情,它们之间互不干扰。
各自做自己的事情。事情可以相同也可以不相同。
比如:售票系统、服务器与客户端的连接。
from greenlet import greenlet
def test1():print(12)
gr2.switch()
print(34)
gr2.switch()
def test2():
print(56)
# 会记录位置,接着上次位置继续执行
gr1.switch()
print(78)
# 生成协程对象
gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()
import gevent
def foo(a):
print("Running in foo",a)
gevent.sleep(4)
print("switch to foo again")
def bar():
print("Running in bar")
gevent.sleep(3)
print("switch to bar again")
# 将事件加入协程
f = gevent.spawn(foo,1)
b = gevent.spawn(bar)
# 回收协程
gevent.joinall([f,b])
import gevent
from gevent import monkey
# 在导入socket前执行,改变socket的阻塞形态
monkey.patch_all()
from socket import *
from time import ctime
def server(port):
s = socket()
print(666)
s.bind(("0.0.0.0",port))
s.listen(5)
while True:
c,addr = s.accept()
print("connect from",addr)
gevent.spawn(handler,c)
# 处理客户端事件
def handler(c):
while True:
print(1)
data = c.recv(1024).decode()
if not data:
break
print("recv:",data)
c.send(ctime().encode())
c.close()
if __name__=="__main__":
server(8066)