Python关于进程的总结

										**进程总结*

关于进程有以下3种创建方式
一.os.fork()
首先os模块下的fork函数在Windows系统下无法使用
具体创建进程函数如下:
ret = os.fork()#用ret变量进行接收
if ret == 0:
print(“判定为子进程 --%d—%d”%(os.getpid(),os.getppid()))
#其中子进程中所获取的os.getppid()为父进程的pid
else:
print(“这是父进程–%d”%os.getpid())

#这里应该注意:
1.如果主进程先结束 它不会等待子进程结束
2.在全局变量的问题上 所有的子进程不会共享(也就是说在一个子进程对全局变量进行修改 不会影响其它进程中的全局变量)

二.用Process创建进程
eg:
def ×××():
在这个函数中定义进程需要执行的代码

p1 = Process(target = ×××)#target所指向的函数就是进程所要执行的
p1.start()#子进程开始执行×××里面的函数,主进程继续向下执行
p1.join(x)#堵塞 join的作用就是等待 x表示等待的最长时间 如果在这个时间段内进程未执行完 主进程继续向下执行;不添加x的值 那么就会等待进程结束再向下执行

这个需要注意的是 主进程会等待子进程执行完毕

三.创建进程池
from multiprocessing import Pool

def work():
for i in range(5):
print(“pid = %d”%i)
time.sleep(1)
#4表示进程池中最多有4个进程一起执行
pl = Pool(4)

for i in range(10):
print("—%d—"%i)
pl.apply_async(work)
#向进程中添加任务 如果添加的任务超过了进程池中进程的个数 那么不会添加不进去 它会等待前面的任务执行完毕后 再去刚才的进程继续完成新的任务

#关闭进程池 相当于不能向里面添加新的任务了
pl.close()
pl.join()
#当主进程 创建、添加任务后 主进程默认立马结束 而不是等待子进程 如果不添加join() 导致进程池中的任务不会执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值