色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

為什么感覺python比javac

錢良釵2年前15瀏覽0評論

為什么感覺python比javac?

我們一般使用的 Python 是 CPython,導致它慢的原因主要有下面三條:

它是動態類型語言

它是解釋型語言而非編譯語言它有 GIL(Global Interpreter Lock全局解釋器鎖)

動態特性導致 Python中的變量沒有類型聲明,在執行過程中隨時可能改變其類型,因此其很難被優化,而且還會有變量類型變動帶來的內存釋放及重新分配的性能損失。

Python 是一種解釋型的語言,不像 C/C++ 等編譯型語言會直接將代碼編譯誠機器嗎執行,另外 Python 也沒有像 Java 那樣的即時編譯工具(JIT)。

GIL 限制限制 Python 解釋器在一個時刻只能有一個線程執行,線程的調度和切換也會損失一些性能。

要提高 Python 的執行性能,可以針對以上幾條限制下功夫:

使用 Cython 為 Python 代碼添加一些類型聲明,并將其靜態編譯成可供 Python 調用的擴展模塊。

使用 Numba 對 Python 代碼做即時編譯。打開 GIL。方式有很多,比如說一些庫如 numpy 的很多操作都是打開了 GIL 的,我們在程序中調用這些庫中的相應操作就能打開 GIL,另外也可以使用 Cython 的 with nogil 語句手動地打開 GIL。使用多進程以避開 GIL 的限制。比如說可以使用標準庫中的 multiprocessing 模塊,或者使用像 mpi4py 這樣的包進行多進程的并行計算。

使用并行計算是加速 Python 的非常有效的方式。用 Python 做并行計算的途徑有很多,比如說使用標準庫中的 [threading 模塊](https://docs.python.org/2/library/threading.html)進行線程級別的并行,[multiprocessing 模塊](https://docs.python.org/2/library/multiprocessing.html)進行進程級別的并行,[concurrent.futures 模塊](https://docs.python.org/3/library/concurrent.futures.html)實現異步并行,使用 [IPython.parallel 模塊](https://ipython.org/ipython-doc/3/parallel/index.html)進行多種方式的并行,使用 [mpi4py 包](https://pypi.org/project/mpi4py/)進行 MPI 消息傳遞并行計算,等等。如果可以使用 C/C++,Fortran 或者使用 cython 為 Python 編寫擴展模塊,還可以使用 OpenMP 并行。對 GPU 編程則可以使用 [pyCUDA](https://documen.tician.de/pycuda/)。我的個人[簡書專題](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 博客專欄](https://blog.csdn.net/column/details/26248.html)中有對用 Python 做并行計算的專門介紹并提供了大量的程序實例。有需要或者感興趣的可以了解下。

java運算很難,為什么感覺python比javac