http://www.cnblogs.com/linhaifeng/articles/6817679.html

进程是对正在运行程序的一个抽象。即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。

将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。

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

#二 多道技术:
    1.产生背景:针对单核,实现并发
    ps:
    现在的主机一般是多核,那么每个核都会利用多道技术
    有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个
    cpu中的任意一个,具体由操作系统调度算法决定。
    
    2.空间上的复用:如内存中同时有多道程序
    3.时间上的复用:复用一个cpu的时间片
       强调:遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样
            才能保证下次切换回来时,能基于上次切走的位置继续运行


线程

import threading
import time
def listen(parm):
    print("%s start listening %s... " %(time.ctime(),parm))
    time.sleep(3)
    print("%s end listening %s" %(time.ctime(),parm))

def play():
    print("%s start play...." %(time.ctime()))
    time.sleep(5)
    print("%s end play..." %(time.ctime()))


if __name__ == "__main__":
    t1 = threading.Thread(target=listen, args=("music",))
    t2 = threading.Thread(target=play)

    t1.start()
    t2.start()

    print("%s end of main..." %time.ctime())

'''
Fri Mar  8 17:14:31 2019 start listening music... 
Fri Mar  8 17:14:31 2019 start play....Fri Mar  8 17:14:31 2019 end of main...

Fri Mar  8 17:14:34 2019 end listening music
Fri Mar  8 17:14:36 2019 end play...
'''

join()方法

主线程要等待join的线程结束之后才能退出

import threading
import time
def listen(parm):
    print("%s start listening %s... " %(time.ctime(),parm))
    time.sleep(3)
    print("%s end listening %s" %(time.ctime(),parm))

def play():
    print("%s start play...." %(time.ctime()))
    time.sleep(5)
    print("%s end play..." %(time.ctime()))


if __name__ == "__main__":
    t1 = threading.Thread(target=listen, args=("music",))
    t2 = threading.Thread(target=play)

    t1.start()
    t2.start()

    t1.join()
    t2.join()

    print("%s end of main..." %time.ctime())

'''
Fri Mar  8 17:18:01 2019 start listening music... 
Fri Mar  8 17:18:01 2019 start play....
Fri Mar  8 17:18:04 2019 end listening music
Fri Mar  8 17:18:06 2019 end play...
Fri Mar  8 17:18:06 2019 end of main...
'''
View Code

相关文章: