Lounge of Tomorrow

€uromeinke, FEJ. and Ghoulish Delight RULE!!! NA abides.  


Go Back   Lounge of Tomorrow > A.S.C.O.T > Egg Head
Swank Swag
FAQ Members List Calendar Today's Posts Clear Unread

Reply
 
Thread Tools Search this Thread Display Modes
Old 05-27-2010, 11:18 AM   #1
Ghoulish Delight
I Floop the Pig
 
Ghoulish Delight's Avatar
 
Join Date: Jan 2005
Location: Alternative Swankstyle
Posts: 19,348
Ghoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of coolGhoulish Delight is the epitome of cool
Send a message via AIM to Ghoulish Delight Send a message via Yahoo to Ghoulish Delight
Incidentally, I have a question for anyone familiar with Python.

Is there a way to tell the interpreter that certain commands MUST be executed in order?

e.g.

Quote:
class MyClass():
....def __init__(self, var1):
....self.var1=var1

....def Method1(self):
........subprocess.call("os call")
........return


def main():
....ClassList=[]

....for i in range(5):
........ ClassList.append(MyClass(i))

....for j in ClassList:
........j.Method1()
........subprocess.call("os call")
........ other work




main()
When I run this and it gets to that 2nd loop instead of executing as:
ClassList[0].Method1()
subprocess.call
other work
ClassList[1].Method1()
subprocess.call
other work
ClassList[2].Method1(0
....

I get:
ClassList[0].Method1()
ClassList[1].Method1()
ClassList[2].Method1()
ClassList[3].Method1()
ClassList[4].Method1()
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work


Clearly what's happening is that the interpreter looks at Method1, decides that it's not doing anything that is internally dependent on order of execution, so it optimizes by lumping all 5 executions together. The problem is, the results of the subprocess call ARE dependent on order of execution.

I came up with a workaround. I threw a dummy variable assignment (garbage=self.var1) at the end of Method1. That's enough to convince the interpreter that work is being done and it should keep things in order. But that seems inelegant. Is there a better way to stop the interpreter from thinking it knows better than me?
__________________
'He who receives an idea from me, receives instruction himself without lessening mine; as he who lights his taper at mine, receives light without darkening me.'
-TJ

Ghoulish Delight is offline   Submit to Quotes Reply With Quote
Old 05-28-2010, 10:18 AM   #2
Pirate Bill
Quality since 1973
 
Pirate Bill's Avatar
 
Join Date: Dec 2007
Location: Right here
Posts: 473
Pirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of coolPirate Bill is the epitome of cool
Quote:
Originally Posted by Ghoulish Delight View Post
When I run this and it gets to that 2nd loop instead of executing as:
ClassList[0].Method1()
subprocess.call
other work
ClassList[1].Method1()
subprocess.call
other work
ClassList[2].Method1(0
....

I get:
ClassList[0].Method1()
ClassList[1].Method1()
ClassList[2].Method1()
ClassList[3].Method1()
ClassList[4].Method1()
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work
subprocess.call
other work
My understanding of Python is rather basic, but I think I see the problem. You need to indent the For j loop so it's nested in the For i loop.

ETA: I just reread and this probably won't work either. Meh, it was a shot.
Pirate Bill is offline   Submit to Quotes Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -7. The time now is 04:12 AM.


Lunarpages.com Web Hosting

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.