您的位置:首页 > 编程语言 > Python开发

python并发编程之多进程2-------------数据共享及进程池和回调函数

2017-08-28 20:02 711 查看
一、数据共享

1.进程间的通信应该尽量避免共享数据的方式

2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的。

虽然进程间数据独立,但可以用过Manager实现数据共享,事实上Manager的功能远不止于此。

命令就是一个程序,按回车就会执行(这个只是在windows情况下)
tasklist 查看进程
tasklist | findstr  pycharm   #(findstr是进行过滤的),|就是管道(tasklist执行的内容就放到管道里面了,
管道后面的findstr  pycharm就接收了)


3.(IPC)进程之间的通信有两种实现方式:管道和队列

from  multiprocessing import Pool
import requests
import os
def get_page(url):
print('<%os> get [%s]' %(os.getpid(),url))
response = requests.get(url)  #得到地址  response响应
return {'url':url,'text':response.text}
if __name__ == '__main__':
p = Pool(4)
urls = [
'https://www.baidu.com',
'http://www.openstack.org',
'https://www.python.org',
'https://help.github.com/',
'http://www.sina.com.cn/'
]
obj_l= []
for url in urls:
obj = p.apply_async(get_page,args=(url,))
obj_l.append(obj)
p.close()
p.join()
print([obj.get() for obj in obj_l])


下载网页小例子(无需回调函数)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: