python方法中的竞争条件

python方法中的竞争条件,python,Python,我有两个方法,一个接一个地在循环中调用 main.py(值是一个对象) py(对象定义) 在函数B()中,我得到一个属性错误,即找不到数量,并且程序向前冲到B(),而不是先执行完a() 如何确保只有在A()完成后才执行B(),而不从A()调用B() 我在这里提供了两种方法的完整代码: def getYesterdayPosition(self,Pos,csvInstruments): for data in csvInstrument

我有两个方法,一个接一个地在循环中调用

main.py(值是一个对象)

py(对象定义)

在函数B()中,我得到一个属性错误,即找不到数量,并且程序向前冲到B(),而不是先执行完a()

如何确保只有在A()完成后才执行B(),而不从A()调用B()

我在这里提供了两种方法的完整代码:

              def getYesterdayPosition(self,Pos,csvInstruments):
                 for data in csvInstruments:
                   if data['segment'] == "NFO-FUT":
                     if data['tradingsymbol'] == self.derivative:                   
                        for entry in Pos:
                          if self.derivative == entry['tradingsymbol']:
                            quantity = int(entry['quantity'])
                            self.yesterdays_position = quantity/data['lot_size']                    


               def getPositionDiff(self):
                  if self.yesterdays_position == self.indices:
                     self.trade = 0.0
                  elif self.yesterdays_position > self.indices:
                     self.trade = -(self.yesterdays_position - self.indices)
                  elif self.yesterdays_position < self.indices:
                     self.trade = self.yesterdays_position - self.indices

不确定你的代码在做什么。但问题在于getYesterdayPosition方法

在getYesterdayPosition中,您有很多if条件。他们中的任何一个都失败了,self.yesterdays\u的职位也没有被宣布


最好应用else条件并为错误情况设置一些值。

<代码>定义A()。你的代码不正确,任何地方都没有种族。。。求你了,它在向前跑,虽然它不应该,我不知道为什么它不会真的发生,一定是另一个问题。您绝对需要提供一个完整的示例。这是整个object.py模块吗?如果是,那么您需要将这些函数嵌入到类中,并确保valueList的元素是所述类的实例,它们位于类中,valueList中的对象是该类的实例
    def A(self):
      self.quantity = 10

    def B(self):
      self.quantity = self.quantity + 1 
              def getYesterdayPosition(self,Pos,csvInstruments):
                 for data in csvInstruments:
                   if data['segment'] == "NFO-FUT":
                     if data['tradingsymbol'] == self.derivative:                   
                        for entry in Pos:
                          if self.derivative == entry['tradingsymbol']:
                            quantity = int(entry['quantity'])
                            self.yesterdays_position = quantity/data['lot_size']                    


               def getPositionDiff(self):
                  if self.yesterdays_position == self.indices:
                     self.trade = 0.0
                  elif self.yesterdays_position > self.indices:
                     self.trade = -(self.yesterdays_position - self.indices)
                  elif self.yesterdays_position < self.indices:
                     self.trade = self.yesterdays_position - self.indices
              for value in orderList:
               value.getYesterdayPosition(jsonPositions['net'],csvInstruments)
               value.getPositionDiff()