簡體   English   中英

Stackless python和multicores?

[英]Stackless python and multicores?

所以,我正在玩Stackless Python並且腦子里出現了一個問題,也許這是“假設的”或“常見的”知識,但我發現它實際上寫在無堆棧站點的任何地方。

Stackless Python是否利用多核CPU? 在普通的Python中,你有GIL不斷出現並且(使用多個核心)需要使用多個進程,這對Stackless來說也是如此嗎?

Stackless的Python 使用任何類型的多核環境下的運行上。
這是對Stackless的一種常見誤解,因為它允許程序員利用基於線程的編程。 對於許多人來說,這兩者密切相關,但實際上是兩件事。

Stackless內部使用循環調度程序來調度每個tasklet (微線程),但是沒有tasklet可以與另一個同時運行。 這意味着如果一個tasklet忙,其他的必須等到該tasklet放棄控制。 默認情況下,調度程序不會停止任務並為另一個提供處理器時間。 使用Stackless.schedule()或完成計算后,tasklet有責任將自己安排在調度隊列的末尾。

因此 ,即使多列核心可用,所有的tasklet也以順序方式執行

Stackless之所以沒有多核支持,是因為這樣可以讓線程變得更容易。 這就是無堆棧的全部意義:

來自官方無網站

Stackless Python是Python編程語言的增強版本。 它允許程序員從基於線程的編程中獲益,而不會出現與傳統線程相關的性能和復雜性問題。 Stackless添加到Python的微線程是一種便宜且輕便的便利,如果使用得當,可以帶來以下好處:

  • 改進了計划結構。
  • 更易讀的代碼。
  • 提高程序員的工作效率。

以下是有關多核和無堆棧的更多信息的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM