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