Unconditional loops are unconditionally awesome
brson.github.io
brson.github.io
for(ever){}
That's what I mostly do in java, write a while(true) and then either come back to change the condition or write break in the loop.
For example, within the same script, I would have a simulate_magic_numbers function with a loop that produces a sequence of magic numbers continuously for a few hours and returns them once done. Below, I would like to have a while loop that grabs the magic numbers every 10 minutes and plots them.
I know how to do it with two separate scripts and saving intermediate numbers to a file, but it would be great to be able to do it within a single Jupiter notebook. However, there doesn't seem to be a straight-forward way of doing it.
current_items = None
def generate_numbers():
global current_items
items = []
current_items = items
while True:
items.append(my_item)
return items
def view_current_plot():
plot(current_items)
Note that you probably want to run `generate_numbers()` in a different thread or a different async coroutine so the Jupyter kernel would not block for the duration of it. def gen_magic_nums():
for i in range(100):
yield i**2
for num in gen_magic_nums():
add_to_plot(num)Specifying the condition for the loop up front makes me feel more confident about the loop safely concluding once the work is done.