进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新 ...
分类:
系统相关 时间:
2019-01-12 13:21:07
阅读次数:
210
Unix/Linux/Mac操作系统提供fork()系统调用 Windows下 multiprocessing Pool 进程池 Process之间肯定是需要通信的,操作系统提供了很多机制来实现进程间的通信。Python的multiprocessing模块包装了底层的机制,提供了Queue、Pipe ...
分类:
编程语言 时间:
2019-01-12 00:22:22
阅读次数:
168
####################总结######################## 管道:是进程间通信的第二种方式,但是不推荐使用,因为管道会导致数据不安全的情况出现 事件:当我运行主进程的时候 需要子执行某个进程后 需要的返回值时 可以使用 信号量:互斥锁同时只允许一个线程更改数据,而信 ...
分类:
编程语言 时间:
2019-01-11 00:45:45
阅读次数:
318
管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 事件 E = Event() #初识状态是false E.wait() 当事件对象e的状态为false的时候,在wait的地方会阻塞程序,当对象状态为true的时候,直接在这个w ...
分类:
编程语言 时间:
2019-01-10 21:51:58
阅读次数:
263
案例: 基于事件的进程间通信: 示例: map方法使用: 进程池的异步方法和同步方法时间比较(异步效率更高) 进程池同步方法: 进程池异步方法: 进程池同步方法与异步方法的时间比较 示例: ...
分类:
编程语言 时间:
2019-01-10 18:20:17
阅读次数:
252
在发起一个异步任务时,指定一个函数任务完成后调用函数 为什么需要异步 在使用线程池或进程池提交任务时想要任务的结果然后将结果处理,调用shudown 或者result会阻塞 影响效率,这样的话采用异步调用 比如result本来是用水壶烧水烧开了拿走,烧下一个 用shutdown可以将水壶一起烧但是一 ...
分类:
编程语言 时间:
2019-01-04 20:24:33
阅读次数:
306
异步的使用场景 爬虫: 1.从目标站点下载网页数据,本质是HTML格式字符串 2.用re从字符串中提取出你所需要的数据 进程池使用异步回调来处理结果 线程池使用异步回调来处理结果 什么是回调函数? a 交给 b一个任务,b在执行完成后回过头调用了a的一个函数 就称之为回调函数 通常异步任务都会和回调 ...
分类:
编程语言 时间:
2019-01-04 20:23:14
阅读次数:
214
一、GIL全局解释器锁 全局解释器锁 在CPython中,全局解释器锁(GIL)是一个互斥锁,它可以防止多个本机线程同时执行Python代码。之所以需要这个锁,主要是因为CPython的内存管理不是线程安全的。(然而,自从GIL存在以来,其他特性已经逐渐依赖于它所执行的保证) 什么是GIL 全局解释 ...
分类:
编程语言 时间:
2019-01-04 00:23:56
阅读次数:
222
GIL 全局解释器锁,针对解释器级别的数据安全 GIL会降低效率提高数据安全性 已经有解决方案但是修改牵扯太多 使得多线程在多核处理器下也无法并行 在多核情况下io密集型推荐多线程,计算密集型用多进程 与自定义锁级别不同要保护自己的数据要自定义 进程池默认装入cpu 个数 ,线程池默认cpu个数*5 ...
分类:
编程语言 时间:
2019-01-03 16:41:58
阅读次数:
150
中间件监控看是否有性能瓶颈 核心:主要看中间件的线性池进程池有没有排队情况,请求是否处理及时就OK Apache 以前php都是用apache,现在基本用nginx了。 首先自己启动apache,它的工程路径在/var/www/下面 首先,切换到httpd的路径:(我们是yum安装的apache,因 ...
分类:
Web程序 时间:
2018-12-26 12:56:20
阅读次数:
193