treequeues: 為pytree物件提供高效能的佇列
如果您使用 jax 並且需要在程式之間傳遞一些 pytree,我可能會為您提供一些東西:)
我開發了一個“樹佇列”。它是為 pytree 的巢狀陣列建立的佇列。
傳輸速度比普通佇列快10倍。這是透過利用共享記憶體陣列和避免pickling資料來完成的。這在開發分散式架構時非常有用,例如,速度是最重要的分散式強化學習。
在我的例子中,這個實現對於在實現 PBT 演算法時消除瓶頸非常有用!
這個庫包包含了使用pytree和multiprocessing.Arrays在程式之間傳輸陣列和巢狀陣列的佇列。與vanilla multiprocessing.Queue相比,這個實現可以達到高達10倍的速度,這取決於樹的形狀和大小以及涉及的程式數量。
透過使用numpy陣列與多程式陣列的緩衝,資料可以在不需要醃製的情況下傳送。
缺點之一是總大小(巢狀陣列的大小與佇列的最大大小)需要預先分配。
這個包包含TreeQueue和ArrayQueue,在這兩種情況下,建立佇列時需要傳遞一個資料例項和最大尺寸。
這個資源庫的靈感來自portugueslab的ArrayQueues。
點選標題
相關文章
- 高效能佇列——Disruptor佇列
- 高效能佇列設計佇列
- 你應該知道的高效能無鎖佇列Disruptor佇列
- 高效能無鎖佇列 Disruptor 初體驗佇列
- .NET 高效能緩衝佇列實現 BufferQueue佇列
- TARS為SpringCloud提供高效能的RPC能力SpringGCCloudRPC
- 一文讀懂 .NET 中的高效能佇列 Channel佇列
- 如何構建“高效能”“大小無限”(磁碟)佇列?佇列
- 使用db-scheduler實現高效能持久佇列佇列
- [訊息佇列]kafka高效能/高吞吐量佇列Kafka
- 佇列、阻塞佇列佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 如此狂妄,自稱高效能佇列的Disruptor有啥來頭?佇列
- php的陣列轉為物件PHP陣列物件
- 刷題系列 - 合併兩個順序佇列為一個新的佇列佇列
- 佇列-單端佇列佇列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- 聊聊訊息佇列高效能的祕密——零拷貝技術佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- synchronized 中的同步佇列與等待佇列synchronized佇列
- 訊息佇列為何如此重要?佇列
- 一個高效能無鎖非阻塞連結串列佇列佇列
- 高效能分散式記憶體佇列系統beanstalkd(轉)分散式記憶體佇列Bean
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序
- 佇列的一種實現:迴圈佇列佇列
- 你的佇列為啥一直重試 ?佇列
- laravel的佇列Laravel佇列
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 圖解--佇列、併發佇列圖解佇列
- 單調佇列雙端佇列佇列
- 佇列的順序儲存--迴圈佇列的建立佇列
- 為什麼要使用訊息佇列?佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- Python佇列的三種佇列實現方法Python佇列
- 佇列佇列
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- Kafka 延時佇列&重試佇列Kafka佇列