When working e.g. on the raspberry PI, you can't always avoid multi-threading because of the way GPIOs are handled on that platform.
The SDL documentation of SDL_PushEvent explicitly states that it's multi-thread safe.
However, the current implementation of event.post_event checks for pygame.init() being called unconditionally when posting from another thread. I'm not an SDL expert, and got to work around things by invoking "pygame.init()" once when hitting that thread first.
This should happen "magically" behind the curtains.