标签:
复习:
线程与进程的区别:
进程:资源的集合
线程:最小调度单位
信号量:也相当于是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