- 一、操作系统与应用程序
- 1、系统同样也是软件,用于帮助控制计算机硬件,让他们之间互相配合
- 2、应用程序---(框架)------各种语言的解释器------操作系统-----计算机的硬件
- 二、并发与并行
- 1、并发:伪,并不是真正的同时执行,由于执行速度特别快,感觉不到停顿
- 2、并行:真,创建多个同时操作
- 三、线程与进程
- python本身没有进程和线程,也是调用的系统的进程和线程
- 一个应用程序之中,默认存在一个进程,可以创建多个进程
- 一个进程之中,默认创建一个线程,可以创建多个线程
- 线程
- 1、工作的最小单元
- 2、共享进程中的所有资源
- 3、每个线程可以分担一些任务,最终完成结果
- 4、主要为了工作而设立
- 进程
- 1、主要为了提供工作环境
- 2、独立开辟内存
- 3、进程之间的数据隔离
- gil锁:全局解释器锁:限制同一时间,一个进程之中只有一个线程被调用
- 四、多线程与多进程
- 多线程:
- 计算密集型的操作,由于python之中存在gil锁,在遇到计算密集型的操作的时候,开启多线程并不能提高效率,而对于c#或者jave语言,由于他们中并没有限制存在,开启多线程可以让cpu同时运行一个进程之中的多个线程,提高执行效率
- IO类型操作,如:文件操作,输入输出,socket;这个时候开启多线程便会提高效率,因为此操作实际上并不在cpu中运行,cpu只是起了一个类似“传话”的作用
- 多进程
- 计算密集型操作,使用多进程的可以提高执行的效率,但是这样十分浪费资源,因为多开一个进程便会为其多开辟一个空间
- IO操作和上条一样,执行效率很快,但是很浪费空间
- 五、多线程的编写
- 1、命令一:t.setDaemon(True),若是加入此命令,则表示主程序不会等待子程序,在主程序运行结束后直接结束。
- 2、命令二:t.join(),主线程需等待线程t执行完毕之后才能往下走;join后面可以跟参数,表示最大等待时间
- 3、线程命名
- 1、为线程设置名称:t.setName(XXXX)
- 2、在线程调用的函数中,加入t=threading.current_thread( )获得当前目录,print(t.getname)可获得进程名
- 4、线程的本质
- t.start()中的start不是表示立刻执行该线程,而是通知cpu我可以执行,但是什么时候执行不确定,由cpu内部决定
posted on
2018-09-10 16:35
哈尔斯塔特
阅读(
61)
评论()
收藏
举报