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?
If you are using python to run the automation... I would attempt to automate everything using paramiko.  It's a versatile ssh library for python.  Instead of going back to the output, you could collect multiple lines of output live and then disconnect when you no longer need the process and let ssh do the killing for you.
How to start a process on a remote server, disconnect, then later collect output?