I don't think it's obvious that spin_once() shouldn't be called from multiple threads. Let's improve the documentation.
Link to the current documentation: https://docs.ros2.org/latest/api/rclpy/api/init_shutdown.html
answers.ros.org question that helped me figure this out: https://answers.ros.org/question/356686/python-not-able-to-echo-ros2-topics-published-on-thread/