十六、python开发之进程与线程

一、程序与进程:
    1、概念: 
            程序并不能单独运行,必须系统为它分配资源,装载到内存中才能运行,而这执行的过程就是进程
            程序是指令的集合,是进程运行的静态描述文件
            进程是程序的一次执行活动,是动态的过程
 
    2、作用:
            进程就是为了在CPU上实现多道编程而提出的
            将多个程序同时加载到内存中,在操作系统的调度下,实现并发执行,大大的提高了COU的利用率
 
二、线程:
    1、概念:
            线程是操作系统能够进行运算调度的最小单位
 
    2、作用:
            线程是进程的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务
 
 
三、threading模块
直接调用模式:
import threading
def work(name):
    print("%s at work" %name)
 
t1 = threading.Thread(target=work,args=('cai',))
t2 = threading.Thread(target=work,args=('liu',))
 
t1.start()    #启动线程t1
t2.start()
 
print(t1.getName())        #获取线程名
print(t2.getName())
 
继承式调用:
import threading
class MyThread(threading.Thread):
    def __init__(self,num):
        threading.Thread.__init__(self)
        self.num = num
 
    def run(self):
        print("number:%s" %self.num)
 
t1 = MyThread(1)
t2 = MyThread(2)
t1.start()
t2.start()
 
四、线程的调用方法
m = threading.Thread(target=main,args=[])
m.setDaemon(true)    #将main线程设置为Daemon线程,它作为主线程的守护线程,当主线程退出时,m线程也会退出,由m启动的其它子线程也会同时退出,不管是否执行完任务。
m.join()   等待线程执行完毕,再执行下一个线程
 
五、线程锁(互斥锁Mutex)
num = 100     #设置一个变量
lock = threading.Lock        #生成全局锁
lock.acquire()            #修改数据前加锁
num -=1         #加锁后同一时间只能允许一个线程修改数据
local.release()    #修改完数据后释放锁
 
 
六、queue队列
class queue.Queue(maxsize=0)        #先入先出
class queue.LifoQueue(maxsize=0)        #后入先出
class queue.PriorityQueue(maxsize-0)        #存储数据时可设置优先级的队列
 
posted @ 2018-06-19 15:53  caibaofei  阅读(87)  评论(0编辑  收藏  举报