网上关于python 的线程池,进程池相关的资料较少,很多都是参考官方例子的代码。我们这篇文章就给出一些基于计算机视觉的代码实例。
实际上GIL 限制了线程池的使用场景,但是从发展的眼光看,使用线程池是非常必要的。尤其是正儿八经的生产系统。
可以使用3种方法避免全局锁的限制: 多进程,cython,使用非CPython解释器。
Python未来版本传来好消息 ,据 Python开发者透露:
3.12版本, PEP703中新增了功能,Cython 会将GIL做为可选项,即可以在cython中关闭 GIL,而不是只在部分代码中通过with nogil 来临时关闭.
3.13 中正在讨论通过在子线程增加 subinterpreter 方式,允许子线程运行在多个CPU内核上,听上去这个方式是可行的,虽然增加了一些开销,但对于多线程的性能提升还是明显的。
线程池
文档:
- https://docs.python.org/zh-cn/3/library/concurrent.futures.html
- https://www.pythontutorial.net/python-concurrency/python-threadpoolexecutor/