forked from jackfrued/Python-100-Days
-
Notifications
You must be signed in to change notification settings - Fork 103
Home
morita816-code edited this page Apr 2, 2026
·
1 revision
重點:非同步I/O與多程序的比較。
當程式不需要真正的併發性或並行性,而是更多的依賴於非同步處理和回撥時,asyncio就是一種很好的選擇。如果程式中有大量的等待與休眠時,也應該考慮asyncio,它很適合編寫沒有實時資料處理需求的Web應用伺服器。
Python還有很多用於處理並行任務的三方庫,例如:joblib、PyMP等。實際開發中,要提升系統的可擴充套件性和併發性通常有垂直擴充套件(增加單個節點的處理能力)和水平擴充套件(將單個節點變成多個節點)兩種做法。可以透過訊息佇列來實現應用程式的解耦合,訊息佇列相當於是多執行緒同步佇列的擴充套件版本,不同機器上的應用程式相當於就是執行緒,而共享的分散式訊息佇列就是原來程式中的Queue。訊息佇列(面向訊息的中介軟體)的最流行和最標準化的實現是AMQP(高階訊息佇列協議),AMQP源於金融行業,提供了排隊、路由、可靠傳輸、安全等功能,最著名的實現包括:Apache的ActiveMQ、RabbitMQ等。
要實現任務的非同步化,可以使用名為Celery的三方庫。Celery是Python編寫的分散式任務佇列,它使用分散式訊息進行工作,可以基於RabbitMQ或Redis來作為後端的訊息代理。