欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中Event實(shí)現(xiàn)線程間同步介紹

 更新時(shí)間:2022年04月10日 18:25:02   作者:hsy12342611  
這篇文章主要介紹了python中Event實(shí)現(xiàn)線程間同步,Event是python線程間同步一種常用的方法,下列內(nèi)容總結(jié)需要的朋友可以參考一下

前言:

Event在python線程間同步是一種常用的方法,本博客以生產(chǎn)者線程和工作者線程為例說明Event在線程間進(jìn)行10次同步的應(yīng)用。

import threading
from threading import Event, Thread
import time
import random
from time import sleep
?
pevent = Event() #默認(rèn)是沒有事件的
pevent.clear()
?
cevent = Event()?
cevent.clear()
?
runtimes = 10
mutex_lock = threading.Lock()
?
?
class ProducerThread (threading.Thread):
? ? def __init__(self, name, runflag):
? ? ? ? threading.Thread.__init__(self)
? ? ? ? self.name = name
? ? ? ? self.runflag = runflag
? ? ? ? self.continueflag = Event()
? ? ? ? self.continueflag.set()
? ? ? ??
? ? def run(self):
? ? ? ? global runtimes ?
? ? ? ? sleep(1)
? ? ? ? print ("開始線程:" + self.name)
? ? ? ? while self.continueflag.isSet():
? ? ? ? ? ? print("wait consumer ...")
? ? ? ? ? ? if runtimes == 0:
? ? ? ? ? ? ? ? self.continueflag.clear()
? ? ? ? ? ? ? ? break
? ? ? ? ? ? pevent.wait()
? ? ? ? ? ? print("come an consumer ...")
? ? ? ? ? ? mutex_lock.acquire()
? ? ? ? ? ? runtimes = runtimes - 1
? ? ? ? ? ? mutex_lock.release()
? ? ? ? ? ? pevent.clear()
? ? ? ? ? ? sleep(1)
? ? ? ? ? ? cevent.set()
? ? ? ? print ("退出線程:" + self.name)
? ? ? ? self.runflag.set()
?
class ConsumerThread (threading.Thread):
? ? def __init__(self,name, runflag):
? ? ? ? threading.Thread.__init__(self)
? ? ? ? self.name = name
? ? ? ? self.runflag = runflag
? ? ? ? self.continueflag = Event()
? ? ? ? self.continueflag.set()
? ? ? ??
? ? def run(self):
? ? ? ? global runtimes?
? ? ? ? print ("開始線程:" + self.name)
? ? ? ? while self.continueflag.isSet():
? ? ? ? ? ? if 0 == runtimes:
? ? ? ? ? ? ? ? self.continueflag.clear()?
? ? ? ? ? ? ? ? pevent.set()
? ? ? ? ? ? ? ? break
? ? ? ? ? ? print("I want to consum ... ", runtimes)
? ? ? ? ? ? pevent.set() #通知生產(chǎn)者要消費(fèi)
? ? ? ? ? ? cevent.wait()
? ? ? ? ? ? cevent.clear()
? ? ? ? ? ? sleep(1)
? ? ? ? print ("退出線程:" + self.name)
? ? ? ? self.runflag.set()
?
def test_pthread():
? ? runflag = Event()?
? ? pt = ProducerThread("producer", runflag)
? ? ct = ConsumerThread("consumer", runflag)
? ? pt.start()
? ? ct.start()
? ? pt.join()
? ? ct.join()
? ? runflag.wait()
?
if __name__ == '__main__':
? ? print('===============begin=================')
? ? test_pthread()
? ? print('===============end=================')

運(yùn)行結(jié)果如下:

到此這篇關(guān)于python中Event實(shí)現(xiàn)線程間同步介紹的文章就介紹到這了,更多相關(guān)Event線程間同步內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)

    Python實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • python 帶時(shí)區(qū)的日期格式化操作

    python 帶時(shí)區(qū)的日期格式化操作

    這篇文章主要介紹了python 帶時(shí)區(qū)的日期格式化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • centos系統(tǒng)升級(jí)python 2.7.3

    centos系統(tǒng)升級(jí)python 2.7.3

    CentOS上安裝的python版本是2.6,不能滿足我運(yùn)行軟件的要求,所以對(duì)python進(jìn)行升級(jí)。Python的最新版本已經(jīng)是3.3,但是Python3的兼容性可能還有一定的問題,所以還是升級(jí)到2.7較為保險(xiǎn)。
    2014-07-07
  • ?python 中的條件判斷語句的使用介紹

    ?python 中的條件判斷語句的使用介紹

    這篇文章主要介紹了?python 中的條件判斷語句的使用,主要學(xué)習(xí)內(nèi)容有封裝過于復(fù)雜的邏輯判斷,不同分支下的重復(fù)代碼等,更多相關(guān)內(nèi)容,需要的小伙伴可以參考下面文章詳細(xì)介紹內(nèi)容
    2022-03-03
  • 用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os)

    用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os)

    這篇文章主要介紹了用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python如何將將模塊分割成多個(gè)文件

    Python如何將將模塊分割成多個(gè)文件

    這篇文章主要介紹了Python如何將將模塊分割成多個(gè)文件,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python+pyhyper實(shí)現(xiàn)識(shí)別圖片中的車牌號(hào)思路詳解

    python+pyhyper實(shí)現(xiàn)識(shí)別圖片中的車牌號(hào)思路詳解

    最近領(lǐng)導(dǎo)給布置了一個(gè)基于圖片識(shí)別車牌號(hào)的工具開發(fā)任務(wù),然后就去研究實(shí)現(xiàn)邏輯,自己根據(jù)opencv寫了一個(gè)小demo,發(fā)現(xiàn)不僅速度慢而且成功率極低。然后,就找到了Hyperlpr開源項(xiàng)目,這篇文章主要介紹了python+pyhyper實(shí)現(xiàn)識(shí)別圖片中的車牌號(hào),需要的朋友可以參考下
    2022-12-12
  • 將matplotlib繪圖嵌入pyqt的方法示例

    將matplotlib繪圖嵌入pyqt的方法示例

    這篇文章主要介紹了將matplotlib繪圖嵌入pyqt的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    之前安裝了Python,后來因?yàn)榫毩?xí)使用Python寫科學(xué)計(jì)算的東西,又安裝了Anaconda,但是安裝Anaconda之后又出現(xiàn)了一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于報(bào)錯(cuò)No?module?named?numpy問題的解決辦法,需要的朋友可以參考下
    2022-08-08
  • OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例

    OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例

    這篇文章主要為大家介紹了OpenCV凸包檢測(cè)和凸缺陷學(xué)習(xí)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論