博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路--操作系统介绍,进程的创建
阅读量:6292 次
发布时间:2019-06-22

本文共 1880 字,大约阅读时间需要 6 分钟。

一 .  操作系统的作用:

  1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口

  2:管理、调度进程,并且将多个进程对硬件的竞争变得有序

二 多道技术:

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

  1.产生背景:针对单核,实现并发

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

  2.空间上的复用:如内存中同时有多道程序

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

三 multiprocess 的简单应用

import timefrom multiprocessing import Processdef 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 timefrom multiprocessing import Processdef 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 Processclass 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 timefrom multiprocessing import Processdef 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('我是主进程!!!')

 

  

 

转载于:https://www.cnblogs.com/attila/p/10241555.html

你可能感兴趣的文章
通过TMG发布ActiveSync
查看>>
Web服务器的配置与管理(4) 配置访问权限和安全
查看>>
ClientScriptManager与ScriptManager向客户端注册脚本的区别
查看>>
js和php中几种生成验证码的方式
查看>>
android UI进阶之仿iphone的tab效果1
查看>>
这是我的第1个C#程序(向控制台输出一句话)
查看>>
html
查看>>
Xqk.Data数据框架开发指南:丰富的、灵活的查询方法(第三部分:SqlField)
查看>>
Python模块学习:threading 多线程控制和处理
查看>>
第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合
查看>>
bLock 回调 就是这么简单!
查看>>
HTML5 input placeholder 颜色 改动
查看>>
【转】Spring 4.x实现Restful web service
查看>>
第三十一篇:SOUI布局之相对于特定兄弟窗口
查看>>
分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)...
查看>>
Spring MVC (Java),强制页面不缓存
查看>>
javascirpt 用英文逗号替换英文分号、中英文逗号或者回车
查看>>
LeetCode --- 57. Insert Interval
查看>>
微信支付curl出错及错误码解决方案
查看>>
Codeforces 41D Pawn 简单dp
查看>>