目前支持多线程的解释型语言(perl 的多线程是残疾,Python的多线程是有compromise的,在任意时间只有一个Python解释器在解释Python bytecode。
如果你的代码是CPU密集型,多个线程的代码很有可能是线性执行的。这种情况下python的多线程是鸡肋,效率可能还不如单线程因为有context switch
但是:如果你的代码是IO密集型,多线程可以明显提高效率。例如制作爬虫,绝大多数时间爬虫是在等待socket返回数据。某个线程等待IO的时候其他线程可以继续执行。
反过来讲:你就不应该用Python写CPU密集型的代码…效率摆在那里…
如果确实需要在CPU密集型的代码里用concurrent,就去用multiprocessing库。这个库是基于multi process实现了类multi thread的API接口,并且用pickle部分地实现了变量共享。
现concurrent.futures包含ThreadPoolExecutor和ProcessPoolExecutor,比multiprocessing更简单。