Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 线程之间的事件通信_Python_Python 3.x_Multithreading_Events - Fatal编程技术网

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()