Multiprocessing, Multithreading and Asyncio in Python Part 1 - Basic Concept
在 Python 3.4 之後出現了 Asyncio 可以在特定情境下提升效能,
結合之前已經有的 Multiprocessing 和 Multithreading,
我整理了一下這三項技術適合的原理、差異和使用情境做了幾篇紀錄。
這一篇先簡單介紹三者的基本概念和適用情境。
在 Python 3.4 之後出現了 Asyncio 可以在特定情境下提升效能,
結合之前已經有的 Multiprocessing 和 Multithreading,
我整理了一下這三項技術適合的原理、差異和使用情境做了幾篇紀錄。
這一篇先簡單介紹三者的基本概念和適用情境。
今天遇到一個問題,
安裝過 nvm 後安裝 global package 的路徑就被改變了,
導致想要移除之前安裝過的 global package 時沒辦法直接用 npm uninstall -g 移除。
怎麼發現這件事的呢?
很久以前我在 global 裝過一個 package 可以直接在 terminal 呼叫 command 執行,
pyenv 的功能和使用的原因pyenv 是用來在系統裡安裝各種不同版本的 python,
並能夠方便的切換 python 版本的工具。
當同時有不同 python 版本的專案需要開發或維護時,
就會需要使用 pyenv 來協助切換 python 的版本。
在出現 asyncio 前,
當一隻 Python 程式有很多需要並行執行的 task,
想要提升程式效能,
只能選用 multiprocessing 或 threading;
Python 3.4 之後又多出了 asyncio 的選擇。asyncio 可以用來撰寫 coroutines,
並使用 event loop 並行執行 coroutines,
減少程式不必要的等待時間以提升效能。
當有很多 Python project 要維護,
不同的 project 有可能使用相同的 python libraries 的不同版本,
不使用 virtual environment 而將所有的 python modules 都裝在自己的機器上就會造成版本衝突。
過去使用 virtualenv + requirement.txt 的機制可以在不同的 project 使用同一個套件的不同版本,
也能夠讓新加入的開發者或 production 環境可以快速安裝 project 需要的套件,