防止Python中的并发方法执行

时间:2013-07-22 02:05:35

标签: python methods concurrency locking

如果这是重复,我很抱歉。我做了一些搜索,但也许我使用的措辞不是最好的(我对Python很新)....

无论如何,这是问题所在。我正在编写与温度控制器进行交互的代码,我想用一个类来设置温度并读取它的类来代表这个控制器 - 就像这样:

class TempController:

    def getTemp(self):
        # some code ...
        return temp

    def setTemp(self, newtemp):
        # some code ...
        return newtemp

    def execute(self, method, newtemp=None):
        if method='set':
            return setTemp(newtemp)
        elif method='get':
            return getTemp()
        return None

现在,我将有两个对象同时调用此对象上的方法。如果一个已经execute,另一个必须等​​到第一个完成后,最好的方法是什么? Python已经确保了吗?如果没有,我想到的最简单的可能就是编辑它:

    locked = False

    def execute(self, method, newtemp=None):
        while locked:
            'wait'

        ans = None
        locked = True

        if method='set':
            ans = setTemp(newtemp)
        elif method='get':
            ans = getTemp()

        locked=False
        return None

while循环中可能还应该有一个超时,但我可以稍后再担心。

谢谢!

0 个答案:

没有答案