创建多进程

简介

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
# coding:utf-8

import time,os,multiprocessing
def work_a():
for i in range(10):
print(i,'a',os.getpid()) #getpid 获取进程号。
time.sleep(1)

def work_b():
for i in range(10):
print(i,'b',os.getpid())
time.sleep(1)

if __name__=='__main__':
start = time.time() # 主进程代码1
a_p = multiprocessing.Process(target=work_a) # 子进程1
# a_p.start() # 子进程1执行
# a_p.join()
b_p = multiprocessing.Process(target=work_b) # 子进程2
# b_p.start() # 子进程2执行
for p in (a_p,b_p):
p.start()
for p in (a_p,b_p):
p.join() # 用join 函数将主进程阻塞。执行完join内容后才继续执行。join所完成的工作就是线程同步,即主线程任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程再终止
for p in (a_p,b_p):
print(p.is_alive())
# work_a()
# work_b()
print('时间消耗是: ',time.time()-start) #主进程代码2 因为主进程、子进程互不干扰,主进程这个会先出结果。
print('parent pid is %s' % os.getpid()) #主进程代码3