*/
pickledArgs execute(in listofstring outargsname, in pickledArgs inargs) raises (SALOME::SALOME_Exception);
-
+ /*! \brief first part of whole execute method. This split is to reduce the memory peak.
+ */
+ void executeFirst(in pickledArgs inargs) raises (SALOME::SALOME_Exception);
+
+ /*! \brief second and last part of execute method. This split is to reduce the memory peak.
+ */
+ pickledArgs executeSecond(in listofstring outargsname) raises (SALOME::SALOME_Exception);
+
pickledArgs getValueOfVarInContext(in string varName) raises (SALOME::SALOME_Exception);
void assignVarInContext(in string varName, in pickledArgs value) raises (SALOME::SALOME_Exception);
l=traceback.format_exception(exc_typ,exc_val,exc_fr)
raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"PyScriptNode: %s, outargsname: %s" % (self.nodeName,outargsname),0))
+ def executeFirst(self,argsin):
+ """ Same than first part of self.execute to reduce memory peak."""
+ try:
+ _,kws=pickle.loads(argsin)
+ self.context.update(kws)
+ exec(self.ccode, self.context)
+ except:
+ exc_typ,exc_val,exc_fr=sys.exc_info()
+ l=traceback.format_exception(exc_typ,exc_val,exc_fr)
+ raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"PyScriptNode:First %s" % (self.nodeName),0))
+
+ def executeSecond(self,outargsname):
+ """ Same than second part of self.execute to reduce memory peak."""
+ try:
+ argsout=[]
+ for arg in outargsname:
+ if arg not in self.context:
+ raise KeyError("There is no variable %s in context" % arg)
+ argsout.append(self.context[arg])
+ argsout=pickle.dumps(tuple(argsout),-1)
+ return argsout
+ except:
+ exc_typ,exc_val,exc_fr=sys.exc_info()
+ l=traceback.format_exception(exc_typ,exc_val,exc_fr)
+ raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"".join(l),"PyScriptNode:Second %s, outargsname: %s" % (self.nodeName,outargsname),0))
+
def getValueOfVarInContext(self,varName):
try:
return pickle.dumps(self.context[varName],-1)