Python的keyboard模块使用多线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的keyboard模块使用多线程?相关的知识,希望对你有一定的参考价值。

在Python的keyboard模块中,使用了线程来处理键盘事件。具体来说,keyboard模块使用了Python标准库中的threading模块来创建线程,以便在后台监视键盘事件并在发生事件时调用回调函数。
当你使用keyboard模块的add_hotkey()函数注册热键时,模块会创建一个新的线程来监视键盘事件。当你按下热键时,这个线程会在后台调用你提供的回调函数。
在使用keyboard模块时,你不需要显式地创建或控制线程,模块会在内部处理线程的创建和管理。如果你需要在程序中使用多线程来完成其他任务,可以通过Python标准库中的threading模块来创建新的线程。
需要注意的是,在使用多线程时,需要注意线程之间的同步和互斥,以避免竞争条件和死锁等问题。建议在使用多线程时仔细阅读Python官方文档,并使用线程安全的工具和技术来编写多线程程序。
参考技术A Python的keyboard模块不使用多线程。它使用事件驱动模型,以便在按下按键时可以立即响应。 参考技术B keyboard模块使用一个线程,监控键盘按键,然后通过event通知到应用程序钟定义的响应函数。
如:
def keyPress(key):
print("Press Key:",key)

listener = keyboard.Listener(on_press=keyPress)
listener.start()

Python多线程

多线程技术需。要用到threading模块,应当避免使用thread模块,原因是它不支持守护线程。当主线程退出时,所有的子线程不管他们是都还在工作,都会被强制退出。有时候我们并不希望发生这种行为

,这时候就需要引入守护线程的概念。 threading模块支持守护线程,所以在需要使用多线程的时候,直接使用threading模块就行。

 1 #coding:utf-8
 2 import sys
 3 reload(sys)
 4 sys.setdefaultencoding(utf8)
 5 from time import sleep,ctime
 6 import threading
 7 
 8 #音乐播放器
 9 def music(func,loop):
10     for i in range(loop):
11         print ( I was listening to %s! %s % (func,ctime()))
12         sleep(2)
13 
14 
15 #视频播放器
16 def movie(func,loop):
17     for i in range(loop):
18         print(I was at the %s! %s % (func,ctime()))
19         sleep(5)
20 
21 #创建线程数组
22 threads = []
23 
24 #创建线程t1,并添加到线程数组
25 t1 = threading.Thread(target=music,args=(爱情买卖,2))
26 threads.append(t1)
27 
28 #创建线程t2,并添加到线程数组
29 t2 = threading.Thread(target=movie,args=(阿凡达,2))
30 threads.append(t2)
31 
32 if __name__ == "__main__":
33     #启动线程
34     for t in threads:
35         t.start()
36     #守护线程
37     for t in threads:
38         t.join()
39     print (all end:%s % ctime())

import threading  :  引入线程模块

threads = 【】:  创建线程数组,用于装载线程

threading.Thread():  通过调用threading模块下的Thread()方法来创建线程。

通过for循环遍历threads数组中所装载的线程;start()开始线程活动,join()等待线程终止。

 

I was listening to 爱情买卖! Thu Dec 21 14:07:58 2017
I was at the 阿凡达! Thu Dec 21 14:07:58 2017
I was listening to 爱情买卖! Thu Dec 21 14:08:00 2017
I was at the 阿凡达! Thu Dec 21 14:08:03 2017
all end:Thu Dec 21 14:08:08 2017

从上面运行的结果来看 两个子线程同时启动14:07 总共用时10秒,两个电影循环总共消耗10秒,两个音乐总共消耗4秒 可以看到达到了并行工作的效果。

 





以上是关于Python的keyboard模块使用多线程?的主要内容,如果未能解决你的问题,请参考以下文章

怎么安装python多线程模块

python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

Python 线程池模块,Python 多线程

thread模块—Python多线程编程

Python学习心得 深入理解threading多线程模块

第49天:Python 多线程之 threading 模块