How to let a loop run for a while before checking for break condition?

S

Sorin Schwimmer

I am thinking on something in the following form:

<code>
import time
import thread

delay=True

def fn()
global delay
time.sleep(<your_amount_of_time_in_seconds>)
delay=False

thread.start_new_thread(fn,())

while delay:
<statement 1>
<statement 2>
...

while <other_condition>:
<statement 1>
<statement 2>
...
</code>

Or, if you need to use "break", the second loop may be
something like:

<code>
while True:
<statement 1>
<statement 2>
...
if <other_condition>: break
<other_statements>
...
</code>

The two while loops have the same content, but the
first is terminated after a pre-determined amount of
time, while the second by another condition. Usually
the content of the too loops, being the same, is a
call to a function that does the actual work. In your
case, as time seems to be critical, you don't want to
spend it in function-call overheads, so you repeat
(cut'n'paste) the relevant code.

Of course, the price to be paid is in maintenance
headache: you'll have to make all the changes in both
loops, to keep consistency.

I hope this helps.

Sorin

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
 
C

Claudio Grondi

Sorin said:
I am thinking on something in the following form:

<code>
import time
import thread

delay=True

def fn()
global delay
time.sleep(<your_amount_of_time_in_seconds>)
delay=False

thread.start_new_thread(fn,())

while delay:
<statement 1>
<statement 2>
...

while <other_condition>:
<statement 1>
<statement 2>
...
</code>

Or, if you need to use "break", the second loop may be
something like:

<code>
while True:
<statement 1>
<statement 2>
...
if <other_condition>: break
<other_statements>
...
</code>

The two while loops have the same content, but the
first is terminated after a pre-determined amount of
time, while the second by another condition. Usually
the content of the too loops, being the same, is a
call to a function that does the actual work. In your
case, as time seems to be critical, you don't want to
spend it in function-call overheads, so you repeat
(cut'n'paste) the relevant code.

Of course, the price to be paid is in maintenance
headache: you'll have to make all the changes in both
loops, to keep consistency.

I hope this helps.
It doesn't.

Claudio
 
S

Steve Holden

Claudio said:
Sorin Schwimmer wrote: [...]
It doesn't.

Claudio

Sometimes silence is preferable to a concrete response. It takes less
time and occupies less bandwidth.

regards
Steve
who should perhaps have followed his own advice
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top