Python多线程(1)
进程(process)
进程是程序在内存中的一个实例(进程是程序的一次执行活动,是动态的)
多道编程的实现就是把多个程序的实例同时在内存中打开,给外部一种并发的假象
进程的缺陷:
1,进程在同一时刻只能做一件事情,如果想同时干两件事,进程是无能为力的。
2,进程在执行任务时,如果阻塞(例如等待I/O),那么整个程序就会被挂起
线程(thread)
线程是操作系统可以进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位,一条线程指的是进程中一个单一顺序的控制了,
一个进程可以并发多个线程,每个线程执行不同的任务。
进程与线程的区别:
1,线程之间共享内存地址(有进程创建)
2,线程之间可以直接通信,进程之间不能
3,创建一个线程非常快速简单,创建一个进程需要拷贝完整的程序数据
4,线程可以控制同一进程中的其他线程,进程只能控制子进程
Python实现多线程的模块:
threading
简单的多线程并发程序
1,直接调用
#!/usr/bin/env python3 #-*- coding:utf-8 -*- import threading,time def foo(num): print("running on number {}.".format(num)) time.sleep(5) if __name__ == '__main__': t1 = threading.Thread(target=foo,args=(1,)) t2 = threading.Thread(target=foo,args=(1,)) t1.start() t2.start() print(t1.getName()) print(t2.getName())
2,继承式
#!/usr/bin/env python3 #-*- coding:utf-8 -*- import threading,time class Mythread(threading.Thread): def __init__(self,num): threading.Thread.__init__(self) self.num = num def run(self): print ("Running at number %s." % self.num) time.sleep(5) t1 = Mythread(1) t2 = Mythread(2) t1.start() t2.start()
不管通过何种形式来实现多线程,这些程序在运行的时候线程都是并发的。