You should consider the powerful multiprocessing package. Have a look on this 
piece of code:

import glob
import os
import multiprocessing as multi
import subprocess as sub
import time

NPROC = 4
Python = '/Library/Frameworks/EPD64.framework/Versions/Current/bin/python'
Xterm = '/usr/X11/bin/xterm '

coord = []
Size = '100x10'
XPos = 810
YPos = 170
XOffset = 0
YOffset = 0

for i in range(NPROC):
    if i % 2 == 0:
        coord.append(Size + '+' + str(YPos) + '+' + str(YOffset))
    else:
        coord.append(Size + '+' + str(XPos) + '+' + str(YOffset))
        YOffset = YOffset + YPos

def CompareColourRef(Champ):
    BaseChamp = os.path.basename(Champ)
    NameProc = int(multi.current_process().name[-1]) - 1
    print 'Processing', BaseChamp, 'on processor', NameProc+1
    os.putenv('ADAM_USER', DirWrk + 'adam_' + str(NameProc+1))
    Command =  Xterm + '-geometry ' + '"' + coord[NameProc] + '" -T " Proc' + 
str(NameProc+1) + ' ' + BaseChamp + ' ' + '" -e " ' + Python + ' ' + DirSrc + \
        'CompareColourRef.py ' + BaseChamp + ' 2>&1 | tee ' + DirLog + 
BaseChamp + '.log"'
    Process = sub.Popen([Command], shell=True)
    Process.wait()
    print BaseChamp, 'processed on processor', NameProc+1
    return

pool = multi.Pool(processes=NPROC)

Champs = glob.glob(DirImg + '*/*')
results = pool.map_async(CompareColourRef, Champs)
pool.close()

while results._number_left > 0:
    print "Waiting for", results._number_left, 'tasks to complete'
    time.sleep(15)
    
pool.join()

print 'Process completed'
exit(0)

Cheers
Jean-Baptiste


Le 7 déc. 2011 à 15:43, Olivier Delalleau a écrit :

> Maybe try stackoverflow, since this isn't really a numpy question.
> To run a command like "python myscript.py arg1 arg2" in a separate process, 
> you can do:
>     p = subprocess.Popen("python myscript.py arg1 arg2".split())
> You can launch many of these, and if you want to know if a process p is over, 
> you can call p.poll().
> I'm sure there are other (and better) options though.
> 
> -=- Olivier
> 
> 2011/12/7 Lou Pecora <lou_boog2...@yahoo.com>
> I would like to launch python modules or functions (I don't know which is 
> easier to do, modules or functions) in separate Terminal windows so I can see 
> the output from each as they execute.  I need to be able to pass each module 
> or function a set of parameters.  I would like to do this from a python 
> script already running in a Terminal window.  In other words, I'd start up a 
> "master" script and it would launch, say, three processes using another 
> module or a function with different parameter values for each launch and each 
> would run independently in its own Terminal window so stdout from each 
> process would go to it's own respective window.  When the process terminated 
> the window would remain open.
> 
> I've begun to look at subprocess modules, etc., but that's pretty confusing. 
> I can do what I say above manually, but it's gotten clumsy as I want to run 
> eventually in 12 cores.
> 
> I have a Mac Pro running Mac OS X 10.6.
> 
> If there is a better forum to ask this question, please let me know. 
> 
> Thanks for any advice.
> 
>  
> -- Lou Pecora, my views are my own.
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to