Guest User

Untitled

a guest
Jun 19th, 2012
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2.  
  3. import os, sys
  4. import time
  5. import Queue
  6. import subprocess as sp
  7. import multiprocessing as mp
  8.  
  9. py_exe = sys.executable
  10. py_scr = os.curdir+'/test.py'
  11.  
  12. tm = 5
  13. param = {'t1': tm, 't2': tm, 't3': tm, 't4': tm}
  14.  
  15.  
  16. def worker(cmd=None, queue=None, myname=None):
  17.     if not cmd or not queue or not myname: return False
  18.     runned = True
  19.     #err = False
  20.     while runned:
  21.         try:
  22.             run = sp.Popen(cmd, cwd=os.curdir, shell=False, stdout=sp.PIPE, creationflags=8)
  23.             #if err: queue.join_thread()
  24.         except:
  25.             queue.put('err')
  26.             runned = False
  27.             break
  28.  
  29.         while True:
  30.             p = run.poll()
  31.             time.sleep(0.1)
  32.             queue.put(str(p))
  33.             # continue
  34.             if p == 0: # normal finish
  35.                 queue.put('zzz')
  36.                 time.sleep(0.1)
  37.                 queue.put(None)
  38.                 #queue.put('0-'+str(p))
  39.                 runned = False
  40.                 break
  41.             elif p == 1:
  42.                 queue.put('restart...')
  43.                 #err = True
  44.                 break
  45.                 #run.wait()
  46.                 # time.sleep(3)
  47.                 # run = sp.Popen(cmd, cwd=os.curdir, shell=False, stdout=sp.PIPE, creationflags=8)
  48.                 # time.sleep(0.1)
  49.                 # p = run.poll()
  50.                 # queue.put('1-'+str(p))
  51.             else:
  52.                 out = run.stdout.readline()
  53.                 queue.put(out.rstrip())
  54.                 #queue.put('e-'+str(p))
  55.  
  56.  
  57. def main():
  58.     cmd = [py_exe,py_scr,'t1',str(tm)]
  59.     q = mp.Queue()
  60.     print cmd
  61.    
  62.     z = mp.Process(target=worker, args=(cmd, q, 'i',))
  63.     z.start()
  64.    
  65.     while True:    
  66.         try:
  67.             data = q.get_nowait()
  68.         except Queue.Empty:
  69.             continue
  70.  
  71.         if data: print data
  72.         else: break
  73.  
  74.     z.join()
  75.     print 'exit'
  76.  
  77.  
  78. if __name__ == '__main__':
  79.     main()
Advertisement
Add Comment
Please, Sign In to add comment