如何在Python中锁定特定对象以提供竞争条件?
我正在尝试使用Python为机器人实现一个API。机器人拥有大量的motor对象,这些对象在motor类中实现。有一个叫做moveMotor的功能,它在线程中运行如何在Python中锁定特定对象以提供竞争条件?,python,multithreading,locking,semaphore,race-condition,Python,Multithreading,Locking,Semaphore,Race Condition,我正在尝试使用Python为机器人实现一个API。机器人拥有大量的motor对象,这些对象在motor类中实现。有一个叫做moveMotor的功能,它在线程中运行 """ Motor Class """ class Motor: def __init__(self, motor_id): """ @param motor_id: Motor Identity @type motor_id: int """
""" Motor Class """
class Motor:
def __init__(self, motor_id):
"""
@param motor_id: Motor Identity
@type motor_id: int
"""
self.__motor_id = motor_id
self.__motorState = "r"
def moveMotor(self):
thread = MotorThread(self)
thread.start()
def run(self):
print("Motor starts...")
i = 0
while(i < 3):
print("Wrrrmmmmmmmmmm")
time.sleep(1)
i+=1
“电机类”
电机等级:
def u u初始(自身,电机id):
"""
@参数电机标识:电机标识
@电机类型标识:int
"""
自。\电机\u id=电机\u id
self.\uu motorState=“r”
def移动马达(自):
线程=电机线程(自)
thread.start()
def运行(自):
打印(“电机启动…”)
i=0
而(i<3):
打印(“wrrrmmmmmm”)
时间。睡眠(1)
i+=1
我的问题是,当一个特定的马达在使用时,我找不到实现锁或信号灯的可能性,它只拒绝访问。
因此,当马达1移动马达时,马达2也可以移动马达。但如果有另一个线程调用马达1移动,它必须等待
我在Motor类和MotorThread类中尝试了lock=threading.lock()
和lock=threading.Semaphore()
,并且获得并发布了,是的,从现在开始,到处都是,以进行测试。但我找不到解决办法
谢谢,我希望有人能帮助我。motor类上的实例锁可以正常工作。motor类上的实例锁可以正常工作。