problem with opening a new python program in a new window (and keeping track of the process)

Zak Kinion zkinion at gmail.com
Tue Nov 2 16:55:15 EDT 2010


Hello all,

What I want to do:  launch seperate python programs from one main
program (multi-threading will not achieve this because the mechanize
library uses one shared global opener object which will not suit my
needs)  I want the scripts launched to be in seperate windows that i
can see the output of on screen, seperate processes.  I can accomplish
this in win32 by:

import subprocess;
args = ["cmd", "/c", "START", "python", "myScript.py"];
process1 = subprocess.Popen(args, shell=False);

however, doing will open a new window, but will lose the process id:

e.g.  process1.poll() will always return 0 no matter if the process is
open or not, meaning that python always thinks its closed.
It should return None if the process is still running.

I can do it without using cmd /c start, but then the newly launched
python script is trapped in my original cmd terminal where i launched
the script from in the first place.  I can keep track of the process
now, but the one cmd window open is insufficient to keep track of the
output that a multitude of programs running will produce.  Doing it
without the /c argument will still keep the new script in the same
console.

Yes, I have read I can do this in linux with Konsole or whatever like:
 child = subprocess.Popen("konsole -e python foo.py", shell=True)

however, I need this to run in windows.


Any help or solution is appreciated,


-- 
Zak Kinion
zkinion at gmail.com



More information about the Python-list mailing list