• python--操作系统介绍,进程的创建(并发)


    一 .  操作系统的作用:

      1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口
      2:管理、调度进程,并且将多个进程对硬件的竞争变得有序

    二 多道技术:

      所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。

      1.产生背景:针对单核,实现并发
      ps:
      现在的主机一般是多核,那么每个核都会利用多道技术有4个cpu,
      运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。

      2.空间上的复用:如内存中同时有多道程序
      3.时间上的复用:复用一个cpu的时间片
      强调:遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,
      能基于上次切走的位置继续运行

    三 multiprocess 的简单应用

    复制代码
    import time
    from multiprocessing import Process
    def func1():
        print('我是大帅哥')
        time.sleep(1)
        print('我是宇宙无敌大帅哥')
        time.sleep(3)
        print('人称北京吴彦祖')
    def func2():
        time.sleep(3)
        print('斯嘉丽.约翰逊是大美女')
    if __name__ == '__main__':  # 必须用main 
        f1 = Process(target=func1) # 后面不能用()
        f2 = Process(target=func2)
        f1.start()
        f2.start()
    复制代码

      在进程(process)里面必须用  main 因为当执行start的时候相当于复制了一下子进程,并且是以import形式复制的,如果不main 就相当于进行了递归. 

    四 进程的两种传参方式

      1.

    复制代码
    import time
    from multiprocessing import Process
    def f1(n):
        time.sleep(2)
        print(f'我是{n}号大帅哥')
    if __name__ == '__main__':
        for i in range(10):
            p1 = Process(target=f1, args=(i,))  # args里面是元组,i 是实参,n 是形参
            p1.start()
    复制代码

      2.

    复制代码
    from multiprocessing import Process
    class MyProcess(Process):
        # 要想使类中的init功能需要继承父类的init,在添加新功能
        def __init__(self,n):
            # 要执行process
            super().__init__()  
            self.n = n
        def run(self):
            print('宝宝and%s不可告人的事情'%self.n)
    if __name__ == '__main__':
        p1 = MyProcess('高望')
        p1.start()
    复制代码

    五 join方法

    复制代码
    import time
    from multiprocessing import Process
    def f1():
        time.sleep(2)
        print('xxxx')
    def f2():
        time.sleep(2)
        print('ssss')
    if __name__ == '__main__':
        p1 = Process(target=f1,)
        p1.start()
        p1.join()  # 主进程等待子进程运行完才继续执行
        print('开始p2拉')
        p2 = Process(target=f2,)
        p2.start()
        p2.join()
        print('我要等了...等我的子进程...')
        # time.sleep(3)
        print('我是主进程!!!')
    复制代码
  • 相关阅读:
    部署时,出现用户代码未处理 System.Security.Cryptography.CryptographicException 错误解决方法
    sqlserver学习笔记(三)—— 为数据库添加新的用户
    [.Net MVC] Win7下IIS部署
    CSS的4种引入方式及优先级
    阿里巴巴图标库全部下载
    div的默认position值是静态的static
    阿里巴巴图标库iconfont上传svg后,显示不了图片
    ext.net单元格内容换行显示
    WEB内容换行
    SQL修改日期类型字段为字符串类型
  • 原文地址:https://www.cnblogs.com/uiys/p/10673234.html
Copyright © 2020-2023  润新知