最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在python里協(xié)程使用同步鎖Lock的實例

 更新時間:2019年02月19日 10:21:15   作者:caimouse  
今天小編就為大家分享一篇在python里協(xié)程使用同步鎖Lock的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

盡管asyncio庫是使用單線程來實現(xiàn)協(xié)程的,但是它還是并發(fā)的,亂序執(zhí)行的??梢哉f是單線程的調度系統(tǒng),并且由于執(zhí)行時有延時或者I/O中斷等因素,每個協(xié)程如果同步時,還是得使用一些同步對象來實現(xiàn)。

比如asyncio就定義了一個鎖對象Lock,它一次只允許一個協(xié)程來訪問共享的資源,如果多協(xié)程想訪問就會阻塞起來,也就是說如果一個協(xié)程沒有釋放這個鎖,別的協(xié)程是沒有辦法訪問共享的資源。

例子:

import asyncio
import functools
 
 
def unlock(lock):
  print('callback releasing lock')
  lock.release()
 
 
async def coro1(lock):
  print('coro1 waiting for the lock')
  with await lock:
    print('coro1 acquired lock')
  print('coro1 released lock')
 
 
async def coro2(lock):
  print('coro2 waiting for the lock')
  await lock
  try:
    print('coro2 acquired lock')
  finally:
    print('coro2 released lock')
    lock.release()
 
 
async def main(loop):
  # Create and acquire a shared lock.
  lock = asyncio.Lock()
  print('acquiring the lock before starting coroutines')
  await lock.acquire()
  print('lock acquired: {}'.format(lock.locked()))
 
  # Schedule a callback to unlock the lock.
  loop.call_later(0.1, functools.partial(unlock, lock))
 
  # Run the coroutines that want to use the lock.
  print('waiting for coroutines')
  await asyncio.wait([coro1(lock), coro2(lock)]),
 
 
event_loop = asyncio.get_event_loop()
try:
  event_loop.run_until_complete(main(event_loop))
finally:
  event_loop.close()

輸出結果如下:

acquiring the lock before starting coroutines
lock acquired: True
waiting for coroutines
coro1 waiting for the lock
coro2 waiting for the lock
callback releasing lock
coro1 acquired lock
coro1 released lock
coro2 acquired lock
coro2 released lock

以上這篇在python里協(xié)程使用同步鎖Lock的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • wxpython實現(xiàn)按鈕切換界面的方法

    wxpython實現(xiàn)按鈕切換界面的方法

    這篇文章主要為大家詳細介紹了wxpython實現(xiàn)按鈕切換界面的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python Dict找出value大于某值或key大于某值的所有項方式

    Python Dict找出value大于某值或key大于某值的所有項方式

    這篇文章主要介紹了Python Dict找出value大于某值或key大于某值的所有項方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 一篇超級全面的Python功能圖譜(推薦)

    一篇超級全面的Python功能圖譜(推薦)

    Python作為一種廣受歡迎的高級編程語言,不僅在基本語法上易于學習,還擁有強大的標準庫和活躍的開發(fā)社區(qū),本文詳細介紹了Python從基礎語法到高級應用的全面功能,并通過實際案例和代碼示例展示了其在科學計算、Web開發(fā)、機器學習等多個領域的應用,需要的朋友可以參考下
    2024-09-09
  • 教你用 Python 發(fā)送告警通知到微信的操作過程

    教你用 Python 發(fā)送告警通知到微信的操作過程

    大家都知道常見的告警方式有:郵件,電話,短信,微信,今天通過本文給大家介紹下Python 發(fā)送告警通知到微信的操作過程,感興趣的朋友一起看看吧
    2022-01-01
  • Python?Generator生成器函數(shù)基本概念及高級用途技巧示例

    Python?Generator生成器函數(shù)基本概念及高級用途技巧示例

    這篇文章主要為大家介紹了Python?Generator生成器函數(shù)基本概念及高級用途技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Python可以用來做什么

    Python可以用來做什么

    在本篇文章里小編給大家整理的是一篇關于解惑Python可以用來做什么的基礎文章,有興趣的朋友們可以學習下。
    2020-11-11
  • 基于asyncio 異步協(xié)程框架實現(xiàn)收集B站直播彈幕

    基于asyncio 異步協(xié)程框架實現(xiàn)收集B站直播彈幕

    本文給大家分享的是基于asyncio 異步協(xié)程框架實現(xiàn)收集B站直播彈幕收集系統(tǒng)的簡單設計,并附上源碼,有需要的小伙伴可以參考下
    2016-09-09
  • Python的gevent框架的入門教程

    Python的gevent框架的入門教程

    這篇文章主要介紹了Python的gevent框架的入門教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • pycharm激活碼快速激活及使用步驟

    pycharm激活碼快速激活及使用步驟

    這篇文章主要介紹了pycharm激活碼快速激活及使用步驟,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Pytorch distributed 多卡并行載入模型操作

    Pytorch distributed 多卡并行載入模型操作

    這篇文章主要介紹了Pytorch distributed 多卡并行載入模型操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

吉木萨尔县| 新和县| 平度市| 邢台市| 汾阳市| 德化县| 始兴县| 龙山县| 兰州市| 那坡县| 崇州市| 都昌县| 乃东县| 湘潭市| 芮城县| 宁明县| 长岛县| 利川市| 离岛区| 仪征市| 泸溪县| 金乡县| 自治县| 雷山县| 江源县| 吕梁市| 甘孜| 松溪县| 璧山县| 常宁市| 彭泽县| 灵丘县| 正蓝旗| 玉树县| 阜新| 信丰县| 台北县| 和田县| 嵩明县| 凤凰县| 阿城市|