View difference between Paste ID: nfBaemk2 and dSWNgUrx
SHOW: | | - or go back to the newest paste.
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
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()