python如何切换线程


本文摘自php中文网,作者anonymity,侵删。

条件对象能让一个线程 A 停下来,等待其他线程 B ,线程 B 满足了某个条件后通知(notify)线程 A 继续运行。线程首先获取一个条件变量锁,如果条件不足,则该线程等待(wait)并释放条件变量锁,如果满足就执行线程,也可以通知其他状态为 wait 的线程。其他处于 wait 状态的线程接到通知后会重新判断条件。

下面为一个有趣的例子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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

运行结果如下:

1

2

3

4

5

LiLei: 嫁给我吧!?

HanMeiMei: 没有情调,不够浪漫,不答应

LiLei: 我单下跪,送上戒指!

HanMeiMei: 好吧,答应你了

LiLei: Li太太,你的选择太明治了。

以上就是python如何切换线程的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python的主要用途是什么

Python中如何将数字转字符串

Python如何处理excel数据

Python 2种方法实现叠加矩形框图层

学习Python可以做什么工作

Python中如何给图形填充颜色

Python 2.7.x 和 3.x 版本的重要区别

Python初学者使用什么编辑器

Python如何提高运行速度

Python中map函数和reduce函数的使用方法介绍(附代码)

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...