python学习之-- 进程 和 线程
python 进程/线程详解
进程定义:以一个整体的形式暴露给操作系统管理,它里面包含对各种资源的调用,内存的管理,网络接口的调用等等,对各种资源管理的集合,就可以叫做一个进程。
线程定义:线程是操作系统能够进行运算调度的最小单位(是一串指令的集合)。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
另说明:进程是不能直接操作CPU执行的,每个进程的执行都是默认创建一个主线程来操作CPU进行执行指令集合。
进程和线程的区别:
1:同一进程内的多个线程之间是共享内存空间,每个进程的内存是独立的。
2:同一个进程内的线程之间可以直接交流,而俩个进程如果想通讯,必须通过一个中间代理来实现,如(进程队列,管道,manage)。
3:创建新线程很简单,创建新进程需要对其父进程进行一次克隆。
4:一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作子进程.
举例一个最简单的多线程实现并发效果:
1 import threading,time 2 def fun(n): # 定义一个函数,每次打印后等待2秒钟退出 3 print(n) 4 time.sleep(2) 5 for i in range(5): 6 t = 't%d' % i 7 # 通过线程并发执行5次 8 t = threading.Thread(target=fun,args=('jack',)) 9 t.start()
举例:一个继承式多线程写法(只是一种方法而已)
1 import threading,time 2 class MyThread(threading.Thread): 3 def __init__(self,n): 4 # 重写父类中的属性值 5 super(MyThread,self).__init__() 6 self.n = n 7 def run(self): # 这里的run为固定模式,就是重写父类中的run方法 8 print('输出的字符串为:',self.n) 9 time.sleep(2) 10 for i in range(50): # 一次执行了50个线程 11 n = 'n'+str(i) 12 t = MyThread(n) 13 t.start()