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

Python多進程同步Lock、Semaphore、Event實例

 更新時間:2014年11月21日 09:37:23   投稿:junjie  
這篇文章主要介紹了Python多進程同步Lock、Semaphore、Event實例,Lock用來避免訪問沖突、Semaphore用來控制對共享資源的訪問數(shù)量、Event用來實現(xiàn)進程間同步通信,需要的朋友可以參考下

同步的方法基本與多線程相同。

1) Lock

當多個進程需要訪問共享資源的時候,Lock可以用來避免訪問的沖突。

復制代碼 代碼如下:

import multiprocessing
import sys

def worker_with(lock, f):
    with lock:
        fs = open(f,"a+")
        fs.write('Lock acquired via with\n')
        fs.close()
       
def worker_no_with(lock, f):
    lock.acquire()
    try:
        fs = open(f,"a+")
        fs.write('Lock acquired directly\n')
        fs.close()
    finally:
        lock.release()

if __name__ == "__main__":

    f = "file.txt"
 
    lock = multiprocessing.Lock()
    w = multiprocessing.Process(target=worker_with, args=(lock, f))
    nw = multiprocessing.Process(target=worker_no_with, args=(lock, f))

    w.start()
    nw.start()

    w.join()
    nw.join()

在上面的例子中,如果兩個進程沒有使用lock來同步,則他們對同一個文件的寫操作可能會出現(xiàn)混亂。

2)Semaphore

Semaphore用來控制對共享資源的訪問數(shù)量,例如池的最大連接數(shù)。

復制代碼 代碼如下:

import multiprocessing
import time

def worker(s,i):
    s.acquire()
    print(multiprocessing.current_process().name + " acquire")
    time.sleep(i)
    print(multiprocessing.current_process().name + " release")
    s.release()

if __name__ == "__main__":
 
    s = multiprocessing.Semaphore(2)
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(s,i*2))
        p.start()

上面的實例中使用semaphore限制了最多有2個進程同時執(zhí)行。

3)Event

Event用來實現(xiàn)進程間同步通信。

復制代碼 代碼如下:

import multiprocessing
import time

def wait_for_event(e):
    """Wait for the event to be set before doing anything"""
    print ('wait_for_event: starting')
    e.wait()
    print ('wait_for_event: e.is_set()->' + str(e.is_set()))

def wait_for_event_timeout(e, t):
    """Wait t seconds and then timeout"""
    print ('wait_for_event_timeout: starting')
    e.wait(t)
    print ('wait_for_event_timeout: e.is_set()->' + str(e.is_set()))


if __name__ == '__main__':
    e = multiprocessing.Event()
    w1 = multiprocessing.Process(name='block',
                                 target=wait_for_event,
                                 args=(e,))
    w1.start()

    w2 = multiprocessing.Process(name='non-block',
                                 target=wait_for_event_timeout,
                                 args=(e, 2))
    w2.start()

    time.sleep(3)
    e.set()
    print ('main: event is set')
   
#the output is:
#wait_for_event_timeout: starting
#wait_for_event: starting
#wait_for_event_timeout: e.is_set()->False
#main: event is set
#wait_for_event: e.is_set()->True

相關文章

  • 詳解Python解決抓取內容亂碼問題(decode和encode解碼)

    詳解Python解決抓取內容亂碼問題(decode和encode解碼)

    這篇文章主要介紹了Python解決抓取內容亂碼問題(decode和encode解碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 詳解python中mongoengine庫用法

    詳解python中mongoengine庫用法

    這篇文章主要介紹了python中mongoengine庫用法,主要包括MongoDB的安裝與連接過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python不改變Excel單元格樣式方式—xls和xlsx兩種格式

    Python不改變Excel單元格樣式方式—xls和xlsx兩種格式

    這篇文章主要介紹了Python不改變Excel單元格樣式方式—xls和xlsx兩種格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python數(shù)組如何添加整行或整列

    python數(shù)組如何添加整行或整列

    這篇文章主要介紹了python數(shù)組如何添加整行或整列問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python使用cookielib模塊操作cookie的實例教程

    Python使用cookielib模塊操作cookie的實例教程

    cookielib模塊經常被用來和urllib等模塊配合來制作爬蟲或者第三方SNS客戶端等程序,比如這里我們就將舉一個使用cookie來發(fā)送登錄信息登錄人人網的例子,well,一起來看一下Python使用cookielib模塊操作cookie的實例教程
    2016-07-07
  • windows下python和pip安裝教程

    windows下python和pip安裝教程

    這篇文章主要為大家詳細介紹了windows下Python和pip安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python實現(xiàn)大文本文件分割

    python實現(xiàn)大文本文件分割

    這篇文章主要為大家詳細介紹了python實現(xiàn)大文本文件分割,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python中print()函數(shù)的用法詳情

    Python中print()函數(shù)的用法詳情

    這篇文章主要介紹了Python中print()函數(shù)的用法詳情,Python中print()函數(shù)的方法是打印指定的內容。在交互環(huán)境中輸入“help(print)”指令,可以顯示print()函數(shù)的使用方法,下面來看看具體的詳細內容吧
    2022-02-02
  • PyCharm關閉礙眼的波浪線圖文詳解

    PyCharm關閉礙眼的波浪線圖文詳解

    這篇文章主要介紹了PyCharm關閉礙眼的波浪線的實現(xiàn),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 用python實現(xiàn)超強的加密軟件

    用python實現(xiàn)超強的加密軟件

    大家好,本篇文章主要講的是用python實現(xiàn)超強的加密軟件,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評論

汾西县| 女性| 泾阳县| 中山市| 连山| 确山县| 巩留县| 周口市| 锡林浩特市| 兴仁县| 灵丘县| 静海县| 仪征市| 慈溪市| 嵊泗县| 福建省| 海伦市| 离岛区| 唐海县| 仁化县| 自贡市| 远安县| 衡阳县| 巴林右旗| 延寿县| 高阳县| 陵川县| 黔东| 肃北| 环江| 新邵县| 栾城县| 四平市| 杂多县| 高安市| 大化| 祁门县| 武隆县| 临城县| 新田县| 江川县|