首页 > 其他 > 详细

操作系统

时间:2020-02-15 12:51:01      阅读:60      评论:0      收藏:0      [点我收藏+]

操作系统历史

  • 作用
    • 隐藏复杂硬件接口,并提供良好的抽象接口。
    • 管理、调度进程,并且将多个进程对硬件的竞争变得有序。
  • 异步: 两个函数同时进程
  • 多进程
from multiprocessing import Process
def func():
    print(12345)
if __name__ == '__main__':
        #启动主进程
        p = Process(target=func) # 注册  p 是一个进程对象
        p.start()
        print('*'*10) 
# ****** 12345 同时执行 不一定谁快谁慢
  • os.getpid() 查看当前进程,
  • os.join()
import time
from multiprocessing import Process
def func(arg1,arg2):
    print('*'*arg1)
    time.sleep(5)
    print('*'*arg2)

p = Process(target=func,args=(10,20))
p.start()
p.join() #异步变成同步了;子进程结束
print('=======:运行完了')

开启多进程的多种方式

from multiprocessing import Process
import os
class MyProcess(Process):
    def run(self):
        print(os.getpid())

print('主进程',os.getpid())
p1 = MyProcess()
p1.start()
p2 = MyProcess()
p2.start()

进程与进程之间数据隔离

守护进程

def func():
    while True:
        time.sleep(0.5)
        print('我很好') #子进程

def func2():
    while True:
        print('in func2')
        time.sleep(8)
        print('in func2 finished')

if __name__ == '__main__':
    p = Process(target= func)
    p.daemon = True #设置子进程为守护进程
    p.start()  
    Process(target=func2).start()
    i = 0
    while i<5:
        print('socket sever')
        time.sleep(5)
        i += 1

#守护进程随着主进程 代码执行完成结束 而不是主进程结束;

进程锁

  • multiprocess.Lock #只有一把锁

    信号量

  • multiprocess.Semaphore
  • 某一段代码同一时间只能被n个进程执行
from multiprocessing import Process,Semaphore
import time
import random
def ktv(i):
    sem.acquire()
    print('%s走进ktv'%i) 
    time.sleep(random.randint(1,5))
    print('%s走出ktv'%i)
    sem.release()
sem = Semaphore(4)
for i in range(20):
    p = Process(target=ktv,args=(i,))
    p.start()

事件 通过一个信号来控制多个进程同时执行或者阻塞

操作系统

原文:https://www.cnblogs.com/hzyujun/p/12305058.html

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