Python双线程互相控制示例

Python双线程互相控制示例

  Code

复制代码
import time
import pynput
import threading


# 用于控制循环和监听的全局变量
running = True


def on_press(key):
    global running
    try:
        if key == pynput.keyboard.Key.esc:
            running = False
    except AttributeError:
        pass


def on_release(key):
    # 停止监听
    if key == pynput.keyboard.Key.esc:
        return False


def print_loop():
    global running
    for i in range(1000):
        if not running:
            break
        print(i)
        time.sleep(0.000001)
    print("Loop finished or stopped by ESC.")
    # 循环结束后,设置running为False以停止键盘监听
    running = False


def listen_keyboard():
    global running
    with pynput.keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        while running:
            listener.join()


def main():
    # 创建线程
    thread1 = threading.Thread(target=listen_keyboard)
    thread2 = threading.Thread(target=print_loop)

    # 启动线程
    thread1.start()
    thread2.start()

    # 等待线程结束
    thread1.join()
    thread2.join()


if __name__ == '__main__':
    start_time = time.time()
    main()
    end_time = time.time()
    dur = end_time - start_time
    print('脚本运行时间是:{:.2f}秒'.format(dur))
复制代码

 

posted @   博雅塔之客  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-11-09 STP/RSTP基本概念
2021-11-09 堆叠
2021-11-09 QinQ
2021-11-09 清除配置
2021-11-09 链路聚合
2021-11-09 ARP代理
2021-11-09 VLAN Mapping
点击右上角即可分享
微信分享提示