最近因为工作需求,需要用下python,作为项目需求,多线程和多进程首先要考虑进去。在网上trace相关的一些资料,总是发现一些人在说:python下面是假线程。不觉得有点惊奇,据我所知,连java里面的线程对象(blue thread 虚拟机蓝色线程)也是跟系统有很大关系,多半内部包含了一个真实的系统线程对象,而python据官方说,并不是如同go一样是基于routine的,非真实线程 这种说法估计有误。。
于是乎,做试验:
代码段:
注明:该代码片断的外围还有4个线程执行该部分代码,故此工作线程远大于10个
直接spy 进程:
看见了吗,里面这么多工作线程。。。
linux系统,简单的把手上一个项目在linux上的trace结果发下:
看上图最上出现4个 worker2,简单点说就是一个 worker2主进程,并有3个其子进程(线程),上图最下
显示4个主进程,所以只有一个worker2。 综上,python里面的线程执行体就是真实的系统执行体
今天进一步研究下 python多线程/多进程机制 效率,不再阐述原理,一切‘坑’都产生于GIL机制, 直接上研究代码了:
impor