Merge pull request
#1548 from minrk/ar_sugar
Add sugar methods/properties to AsyncResult that are generically useful:
* `ar.wall_time` = received - submitted
* `ar.serial_time` = sum of serial computation time
* `ar.elapsed` = time since submission (wall_time if done)
* `ar.progress` = (int) number of sub-tasks that have completed
* `len(ar)` = # of tasks
* `ar.wait_interactive()`: prints progress
These are simple methods derived from the metadata/timestamps already created. But I've been persuaded by @wesm's practice of including simple methods that do useful (and/or cool) things.
This also required/revealed some minor fixes/cleanup to clear_output in some cases:
* dedent base `core.displaypub.clear_output`, so it's actually defined in the class
* clear_output publishes `'\r\b'`, so it will clear terminal-like frontends that don't understand full clear_output behavior.
* `core.display.clear_output()` still works, even outside an IPython session.
Added a new notebook that shows how to use these new methods and how to do simple animations/progress bars using `clear_output()`.
Added `Client.spin_thread(interval)` / `stop_spin_thread()` for running spin in a background thread, to keep zmq queue clear. This can be used to ensure that timing information is as accurate as possible (at the cost of having a background thread active).