python事件同步线程threading.Event

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了python事件同步线程threading.Event脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
threading.Event类内置了两个成员:self._cond = CondITion(Lock()) 这是一个条件同步线程,用于wait和noticeallself._flag = False 这个值,默认是False,如果是False,线程进行到wait函数是会阻塞,如果是True,有wait函数的线程解除阻塞,并且在运行到wait函数时如果还是True,这个时候不会阻塞,所以一般在wait后的代码执行完成后,应紧跟event.clear()
threading.Event有4种方法:Event.wait()Event.set()Event.clear()Event.isSet()set函数将self._flag值设置为True ,clear函数将self._flag值设置为False,isSet判断self._flag值是True还是False
import time
import threading
import Sys

event = threading.Event()
action = 'parse'


class Plane(threading.Thread):
    def __init__(self, name, x, y):
        threading.Thread.__init__(self, name=name, args=(x, y))
        self.pix = [x, y]

    def run(self):
        global action
        while action != 's':
            event.wait()
            if action == 'l':
                self.left()
            elif action == 'r':
                self.right()
            elif action == 'u':
                self.up()
            elif action == 'd':
                self.down()
            event.clear()

    def left(self):
        self.pix[0] -= 1
        sys.stdout.write(f'{self.name}:{self.pix}n')

    def right(self):
        self.pix[0] += 1
        sys.stdout.write(f'{self.name}:{self.pix}n')

    def up(self):
        self.pix[1] -= 1
        sys.stdout.write(f'{self.name}:{self.pix}n')

    def down(self):
        self.pix[1] += 1
        sys.stdout.write(f'{self.name}:{self.pix}n')


if __name__ == '__main__':
    threads = []
    for i in range(1, 6):
        threads.apPEnd(Plane('Plane' + str(i), 100, 100))
    for t in threads:
        t.setDaemon(True)  # 设置子线程为守护,即主线程结束则跟着结束
        t.start()
    ipt = 'ok'
    PRint(ipt)
    while ipt != 'exit':
        ipt = input('请输入方向')
        action = ipt.strip()
        event.set()
        time.sleep(0.2)
    else:
        action = 's'
        # event.set()
        print("完毕")

 

脚本宝典总结

以上是脚本宝典为你收集整理的python事件同步线程threading.Event全部内容,希望文章能够帮你解决python事件同步线程threading.Event所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。