多进程


进程相当于任务,线程相当于子任务。
主要可以分为1. 多进程 2. 多线程 3. 多进程+多线程

  • 多进程的变量互不影响
  • 多线程中,所有变量都由所有线程共享

多进程

fork()

fork()调用一次,返回两次。(父进程自动复制一份给子进程);

  1. 子进程永远返回0
  2. 父进程返回子进程的ID
  3. 子进程通过调用getppid() 拿到父进程的ID

p.s. 先返回父进程,在返回子进程?

【程序】

import os

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))
  • os.getpid()#获得当前进程的进程号
  • os.getppid#获得当前进程的父进程的进城号
  • 结果如下
process (876) start...
i 876 just created a child process 877
i am child process 877 and my parent is 876

multiprocessing

【程序】

from multiprocessing import Process
import os

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')
  • if __name__=='__main__':#一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。第一种情况该if 语句执行,第二种情况不执行
  • p=process(target=run_proc, args=('test',))#创建子进程时,只需要传入一个执行函数和函数的参数
  • p.start()#启动process实例
  • p.join()#用于进程间的同步

pool

如果要启动大量的子进程,可以用进程池的方式批量创建子进程

子进程

多线程

分布式进程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值