如何使用Python线程侦听事件
我试图用python实现一个多线程程序,但遇到了一些问题。 我试着设计一个程序,当程序(主线程)收到一个特定的命令时, 程序计数器将返回到上一个数字并继续倒计时 以下是我试图编写的代码:如何使用Python线程侦听事件,python,multithreading,Python,Multithreading,我试图用python实现一个多线程程序,但遇到了一些问题。 我试着设计一个程序,当程序(主线程)收到一个特定的命令时, 程序计数器将返回到上一个数字并继续倒计时 以下是我试图编写的代码: import threading import time count = 0 preEvent = threading.Event() runEvent = threading.Event() runEvent.set() preEvent.clear() def pre(): global cou
import threading
import time
count = 0
preEvent = threading.Event()
runEvent = threading.Event()
runEvent.set()
preEvent.clear()
def pre():
global count
while True:
if event.isSet():
count -= 1
event.clear()
def doSomething():
global count
while True:
# if not runEvent.isSet():
# runEvent.wait()
print(count)
count += 1
time.sleep(1)
def main():
t1 = threading.Thread(target=pre, args=())
t2 = threading.Thread(target=doSomething, args=())
t1.start()
t2.start()
command = input("input command")
while command != 'quit':
command = input("input command")
if command == 'pre':
preEvent.set()
main()
但是我遇到了一些问题
1
2
3
4
pre
3
4
...
但如果t1在完成打印(计数)指令后被阻止,则当事件被清除时,t1将继续从计数+=1执行
因此,输出将如下所示
1
2
3
4
pre
4
5
...
我试图在互联网上查找信息,但我从来不知道如何添加关键字。
是否有一种方法或库可以实现此功能
我已经尽力描述我的问题,但可能还不够好。如果我对我的问题有任何疑问,我可以补充更多的解释
感谢大家耐心阅读我的问题线程模块有一个方法,将在调用或之前阻止。这将完成您在第一个问题中所寻找的内容。对于问题2,您可以定义一个处理退出情况的函数,也可以重新创建一个线程从开始开始