一 .  操作系统的作用:

  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('我是主进程!!!')

最新文章

  1. web应用安全防御100技 好书再次阅读, 变的只是表象,被概念迷惑的时候还是静下心来回顾本质
  2. 利息?hii
  3. SQL Server添加MDW性能监控报表
  4. Ten Tips for Writing CS Papers, Part 2
  5. rcc
  6. Linux 前台 和 后台进程 说明
  7. Joy of Programming: Understanding Bit-fields in C
  8. 二手奢侈品电商Vestiaire Collective融资2000万美元
  9. iOS的动画效果类型及实现方法
  10. UNIX基础知识之信号
  11. HTTP学习笔记2-请求结构
  12. svn 标示提示
  13. 理解javascript中的回调函数(callback)
  14. 贪心算法----区间选点问题(POJ1201)
  15. 【项目 · Wonderland】需求规格说明书 · 终版
  16. python笔记-正则表达式常用函数
  17. Linux知识扩展二:lsof命令
  18. tomcat及nginx相关,格式化输出,配置及日志解析
  19. ifnull是个好东西
  20. gitlab改变服务器ip

热门文章

  1. ZOJ Saddle Point 数学思维题
  2. ES6语言特性,如何在低版本浏览器运行它
  3. 获取文件的MD5码(C#)
  4. JVM垃圾回收机制一
  5. 怎样将python的文件转化为windows的可执行程序
  6. “Debug Assertion” Runtime Error on VS2008 VS2010 winhand.cpp
  7. Android 权限的实现
  8. VMware网络适配器设置
  9. 转载:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
  10. 转过来的Xpath语法