>  기사  >  백엔드 개발  >  Python에서 스레드를 전환하는 방법

Python에서 스레드를 전환하는 방법

anonymity
anonymity원래의
2019-06-18 10:39:564390검색

조건 개체는 스레드 A가 중지하고 다른 스레드 B를 기다리도록 허용합니다. 스레드 B가 특정 조건을 충족하면 스레드 A에게 계속 실행하도록 알립니다. 스레드는 먼저 조건 변수 잠금을 획득하고 조건 변수 잠금을 기다렸다가 만족하면 스레드가 실행되며 대기 상태의 다른 스레드에도 알릴 수 있습니다. 대기 상태의 다른 스레드는 알림을 받은 후 조건을 다시 판단합니다.

Python에서 스레드를 전환하는 방법

다음은 흥미로운 예입니다

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()

실행 결과는 다음과 같습니다.

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

위 내용은 Python에서 스레드를 전환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.