日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python multiprocessing lock_python多进程Lock锁

發布時間:2025/3/21 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python multiprocessing lock_python多进程Lock锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無論是使用多線程或者多進程都會涉及資源的爭奪,比如在多個任務同時讀寫一個文件,任務就是不斷的爭奪文件的讀寫控制權。其中一個任務讀寫,其他任務就不能執行相同的操作。所以我們使用鎖的概念,舉個通俗易懂的例子吧!我們的任務就是在一間房子里生產餅干,A任務搶先拿了鎖,那么A把門鎖住了,其他的都進不來,大約過了一個小時,A任務執行完畢了要去干別的事情,這個時候它不需要再這個房間繼續呆著了,A釋放了鎖,此時門被打開了,其他任務過來紛紛搶奪這個鎖,拿到鎖的任務繼續鎖著門在里面干活,哈哈,大概的意思就是這樣,現在我們通過實際的代碼來看看多進程是如何通過鎖來控制資源的爭奪的。

import multiprocessing

import sys

def worker_with(lock, f):

with lock:#使用with控制上下文,在內部代碼執行完自動釋放鎖

fs = open(f, 'a+')

n = 10

while n > 1:

fs.write("Lockd acquired via with\n")

n -= 1

fs.close()

def worker_no_with(lock, f):

lock.acquire()#顯示強調獲取鎖

try:

fs = open(f, 'a+')

n = 10

while n > 1:

fs.write("Lock acquired directly\n")

n -= 1

fs.close()

finally:

lock.release()#顯示釋放鎖,釋放資源的控制

if __name__ == "__main__":

lock = multiprocessing.Lock()

f = "file.txt"

w = multiprocessing.Process(target = worker_with, args=(lock, f))

nw = multiprocessing.Process(target = worker_no_with, args=(lock, f))

w.start()

nw.start()

print "end"

總結

以上是生活随笔為你收集整理的python multiprocessing lock_python多进程Lock锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。