乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
Java多线程与Python多线程性能比较 | chenzuoli's blog

Java多线程与Python多线程性能比较

      对于多核的Linux服务器,同一环境下,Java多线程和Python多线程同时进行IO密集型操作,哪个程序会更快一些呢?

      无论是Java还是Python他们都是真实的线程,那么也就是调用了操作系统的api来创建线程,至于是创建的是内核级还是用户级线程,不得而知。
      下面这张图来看下用户级和内核级线程配置策略:
thread_strategy

      如果是用户级线程,那么线程对于cpu不可见,由jvm或者python解释器来控制线程获取cpu资源的权限。所以说对于同一个进程下创建的多个线程,同一时刻只有一个线程获取了cpu资源,也就是线程只能并发不能并行(关于并发和并行的解释可以参考文章:并发与并行)。
      那么我们平时所说的Java多线程并行处理又是怎么回事?如果多线程只能并发,不能并行,那么无论是单核还是多核,java和python在io密集型的环境下应用性能是差不多的。
      如果是内核级线程,同一进程下多个线程同一时刻可以获得多个cpu资源,这样就实现了并发,这个就可以说通了,而python解释器GIL(关于python GIL的解释,可以参考文章:Python解释器GIL详解)中的线程锁将python线程控制,使得同一时刻只有一个线程获得cpu资源的权限,所以,在cpu密集型的环境或者是多核系统下,java多线程明显比python多线程性能强。

      IO密集型和Cpu密集型的介绍可以参考文章:
什么是IO密集型与CPU密集型?


Good health is over wealth.

书山有路勤为径,学海无涯苦作舟。

欢迎关注微信公众号:【程序员写书】
程序员写书

喜欢宠物的朋友可以关注:【电巴克宠物Pets】
电巴克宠物

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------