Python 线程之间的事件通信
我正在尝试在两个线程之间设置一个通信,但在第二个线程中从未设置该事件,以下是我迄今为止尝试的内容:Python 线程之间的事件通信,python,python-3.x,multithreading,events,Python,Python 3.x,Multithreading,Events,我正在尝试在两个线程之间设置一个通信,但在第二个线程中从未设置该事件,以下是我迄今为止尝试的内容: import multiprocessing import threading import time class Test1(multiprocessing.Process): def __init__(self, event): super(Test1, self).__init__() self.event = event def run(
import multiprocessing
import threading
import time
class Test1(multiprocessing.Process):
def __init__(self, event):
super(Test1, self).__init__()
self.event = event
def run(self):
time.sleep(10)
self.event.set()
print('event set')
class Test2(multiprocessing.Process):
def __init__(self, event):
super(Test2, self).__init__()
self.event = event
def run(self):
while not self.event.isSet():
self.event.wait()
print('event wait ended')
if __name__ == '__main__':
event = threading.Event()
test1 = Test1(event)
test2 = Test2(event)
test1.start()
test2.start()
test1.join()
test2.join()
在你必须使用,而不是
顺便说一句:和
多处理。事件()
需要is\u set()
而不是isSet()
导入多处理
导入时间
类Test1(multiprocessing.Process):
定义初始化(自我,事件):
super()。\uuuu init\uuuuu()
self.event=事件
def运行(自):
时间。睡眠(3)
self.event.set()
打印('事件集')
类Test2(多处理.Process):
定义初始化(自我,事件):
super()。\uuuu init\uuuuu()
self.event=事件
def运行(自):
而不是self.event.is_set():#
import multiprocessing
import time
class Test1(multiprocessing.Process):
def __init__(self, event):
super().__init__()
self.event = event
def run(self):
time.sleep(3)
self.event.set()
print('event set')
class Test2(multiprocessing.Process):
def __init__(self, event):
super().__init__()
self.event = event
def run(self):
while not self.event.is_set(): # <--- `is_set()` instead of `isSet()`
self.event.wait()
print('event wait ended')
if __name__ == '__main__':
event = multiprocessing.Event() # <--- `multiprocessing` isntead of `threading`
test1 = Test1(event)
test2 = Test2(event)
test1.start()
test2.start()
test1.join()
test2.join()