首页 > 系统服务 > 详细

20180918日学习笔记 - 进程基础

时间:2018-09-18 16:39:57      阅读:134      评论:0      收藏:0      [点我收藏+]

1:操作系统

  多道操作系统

    有多个程序在操作系统中运行

    当一个程序遇到IO操作的时候就把CPU让出来给其他程序使用

  分时操作系统

    时间片

    不是遇到IO操作时让出CPU,而是时间到了就让出CPU

    切换程序需要时间,单纯的分时系统没有提高CPU的利用率,但是提高了用户的使用体验

  实时系统

  个人计算机操作系统

  分布式操作系统

2:进程基础

  进程 Process id  = pid

  程序,进程   进程就是运行中的程序

  pycharm pid :pid 是全系统中唯一对某个进程的标识:

     并且随着程序的重启,pid是会改变的

  进程是操作系统中最小的资源分配单位

  进程与进程之间的数据是隔离的 

 

  进程调度:

    先来先服务 FCFS

    短作业优先算法

    时间片轮转法

    多级反馈队列 算法

  同步:一个程序执行完毕再执行下一个程序

  异步:同时执行多个程序

  同步阻塞:不能充分利用CPU

  异步阻塞:过度利用CPU

  IO多路复用 :比较完善的在网络编程中的解决方案

3:启用进程:

  

import os
import time
import multiprocessing

def count():
    for i in range(10):
        time.sleep(0.5)
        print(‘子进程‘,os.getpid(),os.getppid())
if __name__ == ‘__main__‘:  #只是在windows上必须写
    print(‘主进程‘,os.getpid(),os.getppid())
    p = multiprocessing.Process(target=count).start()
    for i in range(10):
        time.sleep(0.3)
        print(‘*‘*i)

  给子进程传参:

  

import os
import time
import multiprocessing
def count(arg):
    for i in range(10):
        time.sleep(0.5)
        print(‘子进程%s‘%arg,os.getppid(),os.getppid())
if __name__ == ‘__main__‘:
    print(‘主进程‘,os.getpid(),os.getppid())
    p = multiprocessing.Process(target=count,args=(123456,)).start()
    for i in range(10):
        time.sleep(0.3)
        print(‘*‘*i)

  进程之间的数据隔离的

  

import os
import time
import multiprocessing
number = 100
def count():
    global number
    for i in range(100):
        time.sleep(0.1)
        number -= 1
        print(‘子进程:‘,number)
if __name__ == ‘__main__‘:
    print(‘主进程‘,os.getpid(),os.getpid())
    p = multiprocessing.Process(target=count).start()
    # time.sleep(2)
    # print(‘主进程:‘,number)
    for i in range(100):
        time.sleep(0.2)
        print(‘主进程:‘,number)

  启用多个进程

import os
import multiprocessing
def count(arg):
    print(‘子进程%s:‘%arg,os.getpid(),os.getppid())
if __name__ == ‘__main__‘:
    for i in range(10):
        p = multiprocessing.Process(target=count,args=(i,)).start()

  子进程与父进程之间的关系

  

import os
import time
import multiprocessing
def count(arg):
    print(‘子进程%s:‘%arg,os.getpid(),os.getppid())
    time.sleep(5)
    print(‘子进程end‘)
if __name__ == ‘__main__‘:
    for i in range(10):
        p = multiprocessing.Process(target=count,args=(i,)).start()
    print(‘父进程**********‘)

  1.父进程与子进程的启动时异步的

  父进程只负责通知操作系统启动子进程

  接下来的工作有操作系统接手,父进程继续运行

  2.父进程执行完毕之后并不会直接结束程序

  而是等待所有的子进程都执行完毕之后才结束]

  父进程要负责回收子进程的资源

20180918日学习笔记 - 进程基础

原文:https://www.cnblogs.com/lijinming110/p/9669692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!