-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1104.py
More file actions
119 lines (78 loc) · 2.96 KB
/
1104.py
File metadata and controls
119 lines (78 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#print ('Process (%s) start...' %os.getpid())
#pid = os.fork()
#if pid == 0:
# print ('I am child process (%s) and my parent is %s.' %(os.getpid(),os.getppid()))
#else:
# print ('I(%s) just created a child process (%s).' %(os.getpid(),pid))
from multiprocessing import Process,Pool
# 子进程要执行的代码
#def run_proc(name):
# print('Run child process %s (%s)...' % (name, os.getpid()))
#if __name__=='__main__':
# print('Parent process %s.' % os.getpid())
# p = Process(target=run_proc, args=('test',))
# print('Child process will start.')
# p.start()
# p.join()
# print('Child process end.')
#from multiprocessing import Pool
#import os, time, random
#def long_time_task(name):
# print('Run task %s (%s)...' % (name, os.getpid()))
# start = time.time() #设置当前时间戳
# time.sleep(random.random() * 3) # 模拟程序执行 由random.random()生成的随机浮点数时间*3
# end = time.time() #获取当前结束的时间
# print('Task %s runs %0.2f seconds.' % (name, (end - start))) #该任务执行了的时间,去小数点后2位
#if __name__=='__main__':
# print('Parent process %s.' % os.getpid())
# p = Pool(5)
# for i in range(5):
# p.apply_async(long_time_task, args=(i,)) #把进程数0,1,2,3,4 分别传入函数
# print('Waiting for all subprocesses done...')
# p.close()
# p.join()
# print('All subprocesses done.')
#import subprocess
#print('$ nslookup www.python.org')
#r = subprocess.call(['nslookup', 'www.python.org'])
#print('Exit code:', r)
#import subprocess
#print('$ nslookup')
#p = subprocess.Popen(['nslookup'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#output, err = p.communicate(b'set q=mx\npython.org\nexit\n')
#print(output.decode('utf-8'))
#print('Exit code:', p.returncode)
from multiprocessing import Process, Queue
import os, time, random
# 写数据进程执行的代码:
def write(q):
print('Process to write: %s' % os.getpid())
for value in ['A', 'B', 'C']:
print('Put %s to queue...' % value)
q.put(value)
time.sleep(random.random())
# 读数据进程执行的代码:
def read(q):
print('Process to read: %s' % os.getpid())
while True:
value = q.get(True)
print('Get %s from queue.' % value)
if __name__=='__main__':
# 父进程创建Queue,并传给各个子进程:
q = Queue()
pw = Process(target=write, args=(q,))
pr = Process(target=read, args=(q,))
# 启动子进程pw,写入:
pw.start()
# 启动子进程pr,读取:
pr.start()
# 等待pw结束:
pw.join()
# pr进程里是死循环,无法等待其结束,只能强行终止:
pr.terminate()
import subprocess
print('$ nslookup')
p = subprocess.Popen(['nslookup'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate(b'set q=mx\npython.org\nexit\n')
print(output.decode('utf-8'))
print('Exit code:', p.returncode)