I am writing automation code in python to test the behavior of a network application.  As such, my code needs to be able to start a process/script (say, tcpdump or a python script) on a server in the network, disconnect, run other processes and then later return and shutdown/evaluate the process started earlier.  My network is a mix of windows and linux machines and all of the machines have sshd and python running (via Cygwin for the windows machines).  
I've considered a couple of ideas, namely:
- Starting a process and moving it to the background via a trailing ampersand (&)
- Using screen in some fashion
- Using python threads
What else should I be considering?  In your experience what have you found to be the best way to accomplish a task like this?
nohup for starters (at least on *nix boxes) - and redirect the output to some log file where you can come back and monitor it of course.
How to start a process on a remote server, disconnect, then later collect output?