python进程进程池简剖

操作系统是用来协调管理计算机硬件和软件资源的系统程序 他位于硬件和应用程序之间

操作系统是  软件的上一级

操作系统是承载这些软件的平台

多任务

多任务就是同一时刻 进行 多个进行的事情

例如聊qq的同时 还在听音乐

而电脑在执行多任务时实际上 只是cpu在多个应用程序之间高速切换的结果 

所以当电脑卡顿的时候就是因为电脑在切换时 吃力切换不过来了

在操作系统中 运行起来的应用程序就称之为进程 反之 如果这个程序不在执行中那么他就是程序而不是进程

 进程也就是程序的一次执行 也就是说当你执行这个程序第二次又执行了这个程序后 这是两个程序 互不相干

进程是系统进行资源分配和调度的基本单位

两个进程之间没有实质性的关系

import time,os
from multiprocessing import Process             #导入进程类
xiaogou = 10
def dance():
    global xiaogou
    xiaogou += 20
    print('小狗',xiaogou)
    for i in range(3):
        print('跳舞', i,os.getpid(),'父进程',os.getppid())     #想使用getpid函数 必须在调用包内加入os才可使用
        time.sleep(0.8)                                         #pid为子进程ppid为父进程
def sing():
    global xiaogou
    xiaogou += 30
    print('小狗', xiaogou)
    for i in range(3):
        print('唱歌', i,os.getpid(),'父进程',os.getppid())     #
        time.sleep(0.8)

if __name__ == '__main__':
    print('主进程',os.getpid(),'主进程')
    p1 = Process(target=dance)                                  #创建进程,target指向的值为函数
    p2 = Process(target=sing)
    p1.start()                                                  #启动进程
    p2.start()

进程池

from multiprocessing import Pool            #进程池
import os,time
def worker(name):
    start = time.time()
    print(name,'开始')
    time.sleep(2)
    end = time.time()
    print(name,'执行了',end-start)
if __name__ == '__main__':
    pool = Pool(4)
    for i in range(6):
        pool.apply_async(worker,args=(i+1,))  #把进程放到进程池内
    pool.close()                              #close 关闭,不允许在有新的进程进来
    pool.join()                               #主进程阻塞等待子进程结束
    print('结束')

Pool限制几个进程进程池内就只能存在几个进程

猜你喜欢

转载自blog.csdn.net/weixin_44689392/article/details/88826981