9-1进程

一 概念

# 什么是进程 : 运行中的程序,计算机中最小的资源分配单位
# 程序开始执行就会产生一个主进程
# python中主进程里面启动一个进程 —— 子进程
# 同时主进程也被称为父进程
# 父子进程之间的代码执行是异步的,各自执行自己的
# 父子进程之间的数据不可以共享
# 主进程会等待子进程结束之后再结束

二例子
#开启一个子进程
 1 import os
 2 import time
 3 from multiprocessing import Process
 4 def func(num):
 5     print(num,os.getpid())
 6     time.sleep(0.5)
 7     print(num,os.getpid())
 8     time.sleep(0.5)
 9 if __name__ == '__main__':
10     p=Process(target=func,args=(10,))
11     p.start()
12     print(os.getpid(),0)
13     time.sleep(1)
14     print(os.getpid(),1)

##父进程和子进程数据不可以共享,打印n为100

 1 n=100
 2 def func():
 3     global n
 4     n=0
 5     print('------')
 6     time.sleep(3)
 7 if __name__ == '__main__':
 8     Process(target=func).start()
 9     time.sleep(1)
10     print(n)
11 
12 
13 结果:打印n为100

#开启多个子进程

 1 def func(n):
 2     time.sleep(1)
 3     print('_'*n)
 4 if __name__ == '__main__':
 5     l=[]
 6     for i in range(10):
 7         p=Process(target=func,args=(i,))
 8         p.start()
 9         l.append(p)
10 
11     print('子进程开始了')
12     for p in l:p.join()
13     print('10条信息已经发送完毕')

#守护进程

# 守护进程也是一个子进程
# 当主进程的代码执行完毕之后自动结束的子进程叫做守护进程
#当主进程结束的时候守护进程才结束
 1 def deamon_func():
 2     while True:
 3         print('我还活着')
 4         time.sleep(0.5)
 5 def wahaha():
 6     for i in range(10):
 7         time.sleep(1)
 8         print(i*'#')
 9 if __name__ == '__main__':
10     p2=Process(target=wahaha)
11     p2.start()
12     p=Process(target=deamon_func) #先执行这个,这个是守护进程
13     p.daemon=True
14     p.start()
15     for i in range(3):
16         print(i*'##')
17         time.sleep(1)
18     p2.join()

总结

# 开启一个子进程 start
# 子进程和主进程是异步
# 如果在主进程中要等待子进程结束之后再执行某段代码:join
# 如果有多个子进程 不能在start一个进程之后就立刻join,把所有的进程放到列表中,等待所有进程都start之后再逐一join
# 守护进程 —— 当主进程的"代码"执行完毕之后自动结束的子进程叫做守护进程

猜你喜欢

转载自www.cnblogs.com/huningfei/p/9188327.html
9-1
今日推荐