There are several ways, if the python app is fired only once, then maybe command line params and stdout are enough for communication.
or both applications communicate with network sockets: Socket one nim -socket-> python - python do this - python do that Run socket2: nim <-socket- python - nim this was done - nim update the gui please Run you could send line seperated json objects through the network socket, this would just require readLine() and parseJson() on both sides. I've choosen two sockets for this proposal, because then socket1 can always send, and socket2 can always receive (or the other way around). Please also remember that it does not make a difference who is initiating a tcp conneciton. So who is the "server" does not matter. It could be nim or python who is listening. If you have more concrete questions, don't hesitate to ask.