复习:
线程与进程的区别:
进程:资源的集合
线程:最小调度单位
信号量:也相当于是lock
守护线程:服务于非守护线程;
quene:程序的解耦;提高效率;也是有序的容器;队列只有一份数据,取完了就没有了
先进先出(FIFO)
后进先出(LIFO)
生产者消费者模型:也就是为了实现解耦
event:事件---红绿灯实验
i/o不占用cpu,计算占用
python多线程不适合cpu密集型操作任务,适合i/o密集型任务
推荐的书:
《失控》,《必然》
《数学之美》,《浪潮之巅》
鸡汤总结:做一个有素质的人
今天的课程:
一、多进程
解决多核问题而生
单个进程:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,time
def run(name):                      #定义函数
    time.sleep(1)
    print(‘hello‘,name)                        
if __name__ == ‘__main__‘:    
    p = multiprocessing.Process(target=run,args=(‘hehe‘,))        #实例化一个进程
    p.start()                                                      #执行进程
    p.join()                                                       #进程等待
多进程:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,time
def run(name):
    print(‘hello‘,name)
    time.sleep(1)
if __name__ == ‘__main__‘:
    for i in range(10):          #定义循环
        p = multiprocessing.Process(target=run,args=("hehe %s"%i,))
        p.start()
获取进程id:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing,os
def info(title):                  #信息展示函数
    print(title)
    print(‘module name:‘,__name__) #打印模块名称
    print(‘parent process id‘,os.getppid()) #父进程id获取
    print(‘process id‘,os.getpid())     #当前进程id
    print(‘\n\n‘)
def f(name):                               #定义功能函数
    info(‘\033[31;1mfunction f\033[0m‘)
    print(‘hello‘,name)
if __name__ == ‘__main__‘:                  #主进程调用
    info(‘\033[32;1mmain process line\033[0m‘)
    p = multiprocessing.Process(target=f,args=(‘hehe‘,))     #定义进程
    p.start()                                                 #开始进程
    p.join()                                                  #进程等待
每一个子进程都是有其父进程启动的
原文:http://www.cnblogs.com/wanghui1991/p/5910332.html