线程与进程-1

 

1,线程:一堆指令的集合,OS去调度CPU的最小单位就是线程,

                 线程被包含在进程中,是进程中的实际操作单位。

2,不同的应用软件占用不同的内存,否则可以相互访问,就没有安全性了。每一个程序的内存是独立的。

3.进程:一个程序的各种资源的集合叫进程。

4.进程要操作CPU,必须要先创建一个线程。操作CPU是通过线程来实现的。

5.进程就是屋子,线程就是屋子里的各个人,是活的;桌子,空间等。进程不能执行,进程想要执行,必须先创建至少一个线程。

6.CPU本身是不存数据的,CPU本身只负责运算。多个线程可以分享一个CPU。

7.一个进程可以包含一个或多个线程。All the threads in a process have the same view of the memory.

所有在同一个进程里的线程是共享同一块内存空间的。这个内存空间中包含:文件描述符,安全验证的信息等。

8.一个执行的程序的实例称为进程。每一个进程都有唯一的进程标识符,PID号。

 Each process is started with a single thread, oftern called the primary thread 主线程,but can create additional threads from any of its threads.

主线程可以创建子线程,子线程还可以再创建子线程。创建完以后就变成独立平等的线程了。几者之间没有隶属关系。

9.进程快还是线程快?

 

  两者没有可比性,进程要执行必须通过线程,所以他问的是两个线程哪个快?

 

10.启动一个线程快(就是一串指令),还是启动一个进程快(跟操作系统去申请空间)?

 

答:启动一个线程快。启动完了以后,两者的运行速度一样快。

 

11.进程与线程的区别? 

1- 线程共享内存空间,进程的内存是独立的。(Word不能访问QQ) 

2-两个进程之间是相互独立的。同一个进程下的多个线程直接的数据是共享的,因为他们隶属于同一个进程,所以共享一份数据。 

3. 隶属于同一个进程的线程之间,可以直接交流(数据共享,信息传递) 

    但是两个进程之间想通信必须通过一个中间代理。 

4. 创建一个新线程很容易;创建一个新进程需要对其父进程进行一次克隆。 

5. 一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作子进程。 

6. 对主线程的修改可能会影响其他属于同一进程的线程,对父进程的修改不会影响子进程。

 

12. IO 操作不占用CPU, 计算占用CPU. (IO: input/output)

 

      python多线程,不适合CPU密集操作系型的任务,适合IO操作密集型的任务。

 

 

 

 

 

 

来个实例感受一下效果:

 

 

import threading,time

def run(n):
    print('task',n)
    time.sleep(2)

u1=threading.Thread(target=run,args=("t1",)) #target:调用哪个函数,args:给所调用的函数传参数。
u2=threading.Thread(target=run,args=("t2",))
u1.start()
u2.start()

run('t1')
run('t2')

运行结果:

task t1
task t2
All threading finished

 

 

 

另外一种写法:

import threading,time

class MyThread(threading.Thread):
    def __init__(self,n):
        super(MyThread,self).__init__() #继承一下父类的__init__()
        self.n=n
    def run(self):
        print('running in task',self.n)

t1=MyThread('t1')
t2=MyThread('t2')
t1.start()
t2.start()

 

posted on 2017-08-11 07:55  momo8238  阅读(156)  评论(0编辑  收藏  举报