[筆記] Python multi-process task in Docker Container
Python multi-process task in Docker Container container setting 啟動 container 時要做一些設定 假設我的機器有個 8 核心 CPU,以及多張 GPU 要讓 container 使用全部運算資源的話可以這樣設定 docker run --gpus all --cpus 8 --cpuset-cpus 0-7 (後略...) 參數設定 --cpuset-cpus 0-7 8 核心的 cpu 編號從 0 開始到 7 如果想指定 cpu 特定某幾個核心的話可以這樣改: --cpuset-cpus 0,7 使用第一個跟最後一個核心 --cpuset-cpus 0,2,4,6 使用第 1,3,5,7 個核心 ref: https://docs.docker.com/config/containers/resource_constraints/ python 使用 multiprocessing 查看 cpu 核心數 import multiprocessing cpus = multiprocessing.cpu_count() print (cpus) # 8 假設我們有個任務名稱叫做 sleep_task,執行每個運算時都會睡一秒 如果數據量超大,使用單個核心會等到天荒地老 import time # task 內容: 睡一秒後再做放大兩倍的運算 def sleep_task ( input_list ): res = [] for x in input_list: time.sleep( 1 ) res.append(x* 2 ) return res if __name__ == '__main__' : # Single-process start start_time = time.time() input_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ] sp_result = sleep_task(input_list) ...