进程和线程都会的切换都要消耗时间,保存线程进程当前状态以便下次继续执行。在不怎么需要cpu的程序中,即相对于IO密集型的程序,协程相对于线程进程资源消耗更小,切换更快,更适用于IO密集型。协程也是单线程的,没法利用cpu的多核,想利用cpu多核可以通过,进程+协程的方式,又或者进程+线程+协程。 1 ...
分类:
编程语言 时间:
2018-10-07 12:14:03
阅读次数:
161
python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。 进程与线程的使用有很多相似之处,有关线程方面的知识请参考https://www.cnblogs.com/sfencs-hcy/p/9721362.html multiproc ...
分类:
编程语言 时间:
2018-10-05 17:24:02
阅读次数:
179
memcache和redis区别 memcach简介 Memcache时一个内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络I/O,工作机制:在内存中开辟一块空间,然后建立一个hash表,memcached自管理这些hash表 工作原理 Memc ...
分类:
系统相关 时间:
2018-10-05 15:05:51
阅读次数:
180
1、使用多进程,充分利用机器的多核性能 2、对于性能影响较大的部分代码,可以使用C或C++编写 3、对于IO阻塞造成的性能影响,可以使用IO多路复用来解决 4、尽量使用Python的内建函数 5、尽量使用局部变量 ...
分类:
编程语言 时间:
2018-10-02 22:18:50
阅读次数:
266
一、GIL全局解释器锁 1、引子 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。 就好比C++是一套语言(语法)标准,但是可以用不 ...
分类:
编程语言 时间:
2018-10-01 12:53:07
阅读次数:
181
一、multiprocessing模块 python中的多线程无法利用多核优势,如果想要充分地使用多核cpu的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。python提供了multiprocessing multiprocessing 模块用来开启子进程。并在 ...
分类:
编程语言 时间:
2018-09-26 17:50:41
阅读次数:
139
本文将通过实现一个简易的线程池理解线程池的原理,以及介绍JDK中自带的线程池ThreadPoolExecutor和Executor框架。 1.无限制线程的缺陷 多线程的软件设计方法确实可以最大限度地发挥多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性 ...
分类:
编程语言 时间:
2018-09-26 13:01:58
阅读次数:
120
一、什么是进程? 进程是: 1、计算机中最小的资源分配单位 2、进程对操作系统来说还是有一定负担 3、创建一个进程 错做系统要分配的资源大致有: ...
分类:
编程语言 时间:
2018-09-25 18:30:08
阅读次数:
211
Java并发编程基础 并发 在计算机科学中,并发是指将一个程序,算法划分为若干个逻辑组成部分,这些部分可以以任何顺序进行执行,但与最终顺序执行的结果一致。并发可以在多核操作系统上显著的提高程序运行速度。 并发与并行联系与区别 这里参考ErLang之父的解释,ErLang之父谈到了如何向一个5岁小孩解 ...
分类:
编程语言 时间:
2018-09-24 13:39:30
阅读次数:
177
基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性;再简单的点的描述就将指定的进程或线程绑定到相应的cpu上;在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调 ...
分类:
编程语言 时间:
2018-09-22 12:59:19
阅读次数:
230