Heim  >  Artikel  >  Backend-Entwicklung  >  So wechseln Sie Threads in Python

So wechseln Sie Threads in Python

anonymity
anonymityOriginal
2019-06-18 10:39:564440Durchsuche

Das Bedingungsobjekt ermöglicht es einem Thread A, anzuhalten und auf einen anderen Thread B zu warten. Nachdem Thread B eine bestimmte Bedingung erfüllt, benachrichtigt Thread B Thread A, damit er weiterlaufen kann. Der Thread erwirbt zunächst eine Bedingungsvariablensperre, wenn die Bedingung nicht ausreicht, und gibt die Bedingungsvariablensperre frei. Wenn sie erfüllt ist, wird der Thread ausgeführt und andere Threads im Wartezustand können ebenfalls benachrichtigt werden. Andere Threads im Wartezustand werden die Bedingungen nach Erhalt der Benachrichtigung neu beurteilen.

So wechseln Sie Threads in Python

Das Folgende ist ein interessantes Beispiel

import threading
class Boy(threading.Thread):
    def __init__(self, cond, name):
        super(Boy, self).__init__()
        self.cond = cond
        self.name = name
    def run(self):
        self.cond.acquire()
        print(self.name + ": 嫁给我吧!?")
        self.cond.notify()  # 唤醒一个挂起的线程,让hanmeimei表态
        self.cond.wait()  # 释放内部所占用的琐,同时线程被挂起,直至接收到通知被唤醒或超时,等待hanmeimei回答
        print(self.name + ": 我单下跪,送上戒指!")
        self.cond.notify()
        self.cond.wait()
        print(self.name + ": Li太太,你的选择太明治了。")
        self.cond.release()
class Girl(threading.Thread):
    def __init__(self, cond, name):
        super(Girl, self).__init__()
        self.cond = cond
        self.name = name
    def run(self):
        self.cond.acquire()
        self.cond.wait()  # 等待Lilei求婚
        print(self.name + ": 没有情调,不够浪漫,不答应")
        self.cond.notify()
        self.cond.wait()
        print(self.name + ": 好吧,答应你了")
        self.cond.notify()
        self.cond.release()
cond = threading.Condition()
boy = Boy(cond, "LiLei")
girl = Girl(cond, "HanMeiMei")
girl.start()
boy.start()

Die Laufergebnisse sind wie folgt:

LiLei: 嫁给我吧!?
HanMeiMei: 没有情调,不够浪漫,不答应
LiLei: 我单下跪,送上戒指!
HanMeiMei: 好吧,答应你了
LiLei: Li太太,你的选择太明治了。

Das obige ist der detaillierte Inhalt vonSo wechseln Sie Threads in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn