The accepted answer does not address the problem of ‘activating’ a virtualenv in a subprocess.
If you start your application with a call to the python executable, like in your example it is actually very simple: you only have to explicitly point to the executable in the virtualenv.
import subprocess
subprocess.Popen(["virtualenv1/bin/python", "my_script.py"])
subprocess.Popen(["virtualenv2/bin/python", "my_other_script.py"])
will start the processes in the respective virtualenvs.
Important
To address the concerns voiced in the comments:
If you want to run a subprocess and be sure to use the same interpreter that the current process is running in you have to use sys.executable. Also available: sys.exec_prefix to access the site-specific directory prefix where the platform-dependent Python files are installed.
If you want a much more in depth discussion of this topic, have a look at this pull request.