概述
一、什么是多进程
相信看过我其他博客的同学已经对多线程和多进程有一个简单的了解了,下面我们简单说一下多进程。我们知道在进行较多的I/O操作时候,比如socket server之类的可以用到多线程,那么什么时候用多进程呢?我们在进行大量的密集运算时候就要用到多进程。下面我们讲解一下多进程的相关知识:
(1)启动多进程,并在多进程中启动多线程
#启动多进程
import multiprocessing #多进程
import time,threading #多线程
def thread_run():
print(threading.get_ident()) #打印当前线程ID
def f(name):
time.sleep(2)
print('hello',name)
t=threading.Thread(target= thread_run,) #在多进程调用的函数中创建一个多线程
t.start()
if __name__ == '__main__': #区分主动执行脚本还是从别的代码里导入,如果主动执行下面的就执行(在window中需要加入这句话)
for i in range(10): #启动10个多进程
p=multiprocessing.Process(target=f,args= ('我是%s'%i,))
p.start()
p.join()
执行之后会启动10个多进程,每个多进程中都会启动一个多线程,并打印该线程的id,结果如下:
(2)每一个子进程都是由父进程启动的
我们需要知道,每一个子进程都是由父进程启动的。下面我们来通过获取进程id的方式来证明一下:
#我们这里父进程是:pycharm本身 由pycharm启动了子进程
from multiprocessing import Process
import os
def info(title):
print(title)
print('module name:',__name__) #获取__name__名称
print('parent process:',os.getppid()) #得到父进程id
print('process id:',os.getpid()) #得到自己id
print('nn')
def f():
info('