日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

单线程实现并发——协程,gevent模块

發(fā)布時(shí)間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单线程实现并发——协程,gevent模块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 并發(fā)的本質(zhì) ?

  1 切換

  2 保存狀態(tài)

二 協(xié)程的概念

  協(xié)程,又稱微線程,纖程。英文名Coroutine。單線程下實(shí)現(xiàn)并發(fā),用戶從應(yīng)用程序級(jí)別控制單線程下任務(wù)的切換,注意一定是遇到I/O才切。

  協(xié)程的特點(diǎn)在于是一個(gè)線程執(zhí)行,那和多線程比,協(xié)程有何優(yōu)勢(shì)?

  最大的優(yōu)勢(shì)就是協(xié)程極高的執(zhí)行效率。因?yàn)樽映绦蚯袚Q不是線程切換,而是由程序自身控制,因此,沒(méi)有線程切換的開銷,和多線程比,線程數(shù)量越多,協(xié)程的性能優(yōu)勢(shì)就越明顯。

  第二大優(yōu)勢(shì)就是不需要多線程的鎖機(jī)制,因?yàn)橹挥幸粋€(gè)線程,也不存在同時(shí)寫變量沖突,在協(xié)程中控制共享資源不加鎖,只需要判斷狀態(tài)就好了,所以執(zhí)行效率比多線程高很多。

  因?yàn)閰f(xié)程是一個(gè)線程執(zhí)行,那怎么利用多核CPU呢?最簡(jiǎn)單的方法是多進(jìn)程+協(xié)程,既充分利用多核,又充分發(fā)揮協(xié)程的高效率,可獲得極高的性能。

三 gevent模塊

  gevent是一個(gè)基于協(xié)程的Python網(wǎng)絡(luò)庫(kù)。

  需要導(dǎo)入猴子補(bǔ)丁。

  方法:

    g1=gevent.spawn(func,):提交任務(wù)。 ? 生成g1,是Greenlet類

    gevent.sleep():睡

    gevent.joinall(可迭代對(duì)象):阻塞,知道所有選中的任務(wù)執(zhí)行完畢。

    g1.join()?

    g1.value 獲取由func函數(shù)生成Greenlet類的返回值。

import gevent from gevent import monkey;monkey.patch_all() from threading import current_thread import time def foo():print('%s is running ' % current_thread().getName())time.sleep(1)print('%s is done '%current_thread().getName()) def bar():print('%s is running ' % current_thread().getName())time.sleep(2)print('%s is done ' % current_thread().getName())g1=gevent.spawn(foo) g2=gevent.spawn(bar) print('g1',g1) print('g2',g2)# g1.join() # g2.join() gevent.joinall([g1,g2])

  輸出:

g2 <Greenlet at 0x26d7aff0898: bar> DummyThread-1 is running DummyThread-2 is running DummyThread-1 is done DummyThread-2 is done

?

轉(zhuǎn)載于:https://www.cnblogs.com/654321cc/p/7681157.html

總結(jié)

以上是生活随笔為你收集整理的单线程实现并发——协程,gevent模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。