Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 - Fatal编程技术网

Python 如何让一个类的多个实例并行运行一个方法?

Python 如何让一个类的多个实例并行运行一个方法?,python,python-3.x,Python,Python 3.x,所以本质上我有一个类定义如下 class SensorGrouping: def __init__(self, address, screen_identifier): self.factory = PiGPIOFactory(host=address) self.group_id = screen_identifier self.ir_sensor_vertical = MotionSensor(MOTION_PIN_VERTICAL, pin_fact

所以本质上我有一个类定义如下

class SensorGrouping:
  def __init__(self, address, screen_identifier):
      self.factory = PiGPIOFactory(host=address)
      self.group_id = screen_identifier
      self.ir_sensor_vertical = MotionSensor(MOTION_PIN_VERTICAL, pin_factory=self.factory)
      self.led = LED(LED_PIN, pin_factory=self.factory)

  def wait_for_detection():
      self.ir_sensor_vertical.wait_for_motion()
      return self.group_id

其目的是拥有多个传感器分组类。等待,直到传感器被激活,否则运动()将处于空闲状态。我想做的是等待他们的一个红外传感器被触发,然后返回最先触发的传感器组的组id,在这个过程中杀死其他传感器。我已经研究过多处理的imap函数,但它似乎没有满足我的要求。有人有想法吗?

你可以试试这样的方法:@mousetail我已经研究过了,但似乎没有办法强制线程终止,而且wait_for_motion()方法在它监视的运动传感器被激活之前不会返回,当它可能永远检测不到某个东西时,等待它是没有用的。终止线程的诀窍是对它等待的东西做一些事情。例如,如果您可以关闭self.ir\u sensor\u vertical,它很可能会返回到线程。对于可等待的东西来说,有一个异步选项是很常见的。可能是一个可以放入
select()
的套接字,或者是一个锁或互斥锁之类的东西。或者,它可以连接到一个异步框架中,比如python的asyncio。