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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python multiprocessing lock_python多进程Lock锁

發布時間:2025/3/21 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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锁的全部內容,希望文章能夠幫你解決所遇到的問題。

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