自动化工具 Python 多线程 threading multiprocessing tomorrow 三个模块到底哪个更快?

冷月醉夕阳 · 2018年11月09日 · 最后由 尼古拉斯赵四 回复于 2018年11月14日 · 2073 次阅读

最近发现 tomorrow 模块也挺好用的, 只要放一个装饰器就好了,异步执行,简单操作,但总感觉性能一般般,大家一般是哪个模块来做多线程的。

共收到 11 条回复 时间 点赞

threading 多线程,multiprocessing 是多进程,tomorrow 没用过,一般来说用多线程足够了,多进程感觉没啥必要,不过还是要看自己的业务场景,据说还有一个封装了 threading 和 multprocessing 的模块,叫啥我忘记了,好像也还可以

IO 密集型用多线程,一般 IO 阻塞会释放 GIL,多线程有效;CPU 密集型用多进程,此时由于 GIL 导致多线程无效。

残枫 回复

嗯,是的,掌握一种就好了,只是 tomorrow 一行代码搞定,比较简单

blackcoffee 回复

嗯,这个理解

还有 gevent 协程,更轻量级,Locust 性能测试框架就是基于这个协程并发

还是 threading+queue 简单易用。

chris 回复

现在我也是用这个

看了一下原理,io 密集型还是协程最快毕竟没有切换时间,服务器处理能力最高

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor 这个使用更简单

tomorrow 是异步也 在 python 里是所谓的协程,站在 cpu 利用率上肯定协程最高效

尚酷米 回复

tomorrow 这个库就是 用 concurrent.futures 官方例子实现的一个装饰器

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册