【Python】多进程1

1、    进程定义:

(1) 进程是一个实体。每个进程都有他自己的地址空间,一般包括文本区域、数据区域和堆栈。进程是线程的容器。

(2) 进程是一个“执行中的程序”

2、    进程的特征:

(1) 动态性

(2) 并发性

(3) 独立性

(4) 异步性:同步:顺序执行,不可跳跃  异步:并行

(5) 结构特征:进程由程序、数据和进程控制块(PCB,存进程相关的信息,比如进程ID,父ID,状态)三部分组成

(6) 多个不同的进程可以包含相同的程序

3、    CPU组成:运算器、控制器和寄存器

4、    进程切换:从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器

5、    进程的上下文:进程切换时被存储在寄存器中打包的中间数据

6、    进程运行状态:

(1) 就绪状态

(2) 运行状态

(3) 阻塞状态:由于进程等待某种条件(如 I/O 操作或进程同步),在条件未满足之前无法执行

7、    分库、分秒、分布式计算、分布式索引、异步进程

8、    同步、异步、阻塞、非阻塞

9、    程序计数器:program counter 程序运行到哪一行

10、   Python中一些进程模块

(1) os.fork()

(2) subprocess

(3) processing

(4) Multiprocessing

11、   os.fork()

在Linux中,执行fork函数后,父进程拿到的fork函数返回值是子进程的pid,子进程拿到的fork函数返回值是0,父进程和子进程会分别执行后续未执行的代码.换了意思:子进程永远返回0,而父进程返回子进程的ID。

aaarticlea/png;base64,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" alt="" />

12、    进程池pool的一些方法:

(1) apply()

(2) map()

(3) close()

(4) terminate()

(5) apply_async()只能执行一个

13、    线程比进程快的原因:线程依附于进程,但他快的原因是不不涉及到上下文PCB那些东西

14、    Pool.map和六件客map的区别:pool.map用的是多进程,map是单进程

15、    队列:Queue,此队列跟进程中的消息队列不同

Q.put()

Q.full()判断队列是否满了

Q.qsize()判断队列的大小

Q.empty()判断队列是否为空

Q.get(True,2)等待超时时间2秒,设置True后如果等待2秒后还没有数值返回就结束;False表示等2秒后如果没有值抛异常;如果什么都不写,会死等

aaarticlea/png;base64,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" alt="" />

调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常

#练习:最简单的多进程模型

import multiprocessing
def do(n) :
#获取当前线程的名字
name = multiprocessing.current_process().name
print name,'starting'
print "worker ", n
return if __name__ == '__main__' :
numList = []
for i in xrange(5) :
p = multiprocessing.Process(target=do, args=(i,))
numList.append(p)
p.start()
p.join()
print "Process end."
print numList #练习:三个进程,每个进程写一个文件,每个文件中有进程的名字和当前日期 import time
import multiprocessing
import os def write(file):
name=multiprocessing.current_process().name
with open(file,"w") as f:
f.write(name+":"+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
return if __name__=="__main__":
for i in range(3):
file_path = os.path.join("e:\\test4",str(i)+".txt")
p = multiprocessing.Process(target=write, args=(file_path,)) #参数是个元组,所以必须有个逗号
p.start()
p.join() #练习:多进程模板
import multiprocessing
import urllib2
import time def func1(url) :
response = urllib2.urlopen(url)
html = response.read()
print html[0:50]
time.sleep(2) def func2(url) :
response = urllib2.urlopen(url)
html = response.read()
print html[0:50]
time.sleep(2) if __name__ == '__main__' :
p1 = multiprocessing.Process(target=func1,args=("http://www.sogou.com",),name="g1")
p2 = multiprocessing.Process(target=func2,args=("http://www.baidu.com",),name="g2")
p1.start()
p2.start()
p1.join() #加了join是等所有子进程都执行完后才会打印done,如果不加join,会先打印done,但子进程依然会执行
p2.join()
time.sleep(2)
print "done!"
上一篇:CUDA Memories--CUDA记忆体(翻译+整理+测试)


下一篇:云HBase发布全文索引服务,轻松应对复杂查询