計(jì)算密集型-->需要占用大量的CPU資源-->多進(jìn)程
IO密集型-->需要網(wǎng)絡(luò)功能,大量時間都在等待網(wǎng)絡(luò)數(shù)據(jù)的到-->多線程、協(xié)程
進(jìn)程、線程的調(diào)用由操作系統(tǒng)覺得,攜程的調(diào)用由開發(fā)者自己決定
協(xié)程實(shí)現(xiàn)
import time
def A():
while True:
print("----A---")
yield #函數(shù)里邊包含yield 為生成器
time.sleep(0.5)
def B(c):
while True:
print("----B---")
c.next()
time.sleep(0.5)
if __name__=='__main__':
a = A()
B(a)
greenlet
from greenlet import greenlet
import time
def test1():
while True:
print('------A-------')
gr2.switch()
time.sleep(0.5)
def test2():
while True:
print('------B-------')
gr1.switch()
time.sleep(0.5)
gr1 = greenlet(test1)
gr2 = greenlet(test2)
gr1.switch()
gevent
import gevent
def f(n):
for i in range(n):
print(gevent.getcurrent(), i)
gevent.sleep(1)
g1 = gevent.spawn(f, 5)
g2 = gevent.spawn(f, 5)
g3 = gevent.spawn(f, 5)
g1.join()
g2.join()
g3.join()