When the thread is killed by KeyboardInterrupt it may happen while the RWLock was handling the locking of the different queues, leaving the PointJacobi inoperable.
The code should handle abort with SIGINT gracefully, in a way that allows object reuse in IPython or in an interactive session.