Re: [問題] multiprocessing.pool能不用name==main嗎

看板Python作者 (搖滾少女!! 活力棉花糖!!)時間1年前 (2022/12/01 20:06), 1年前編輯推噓2(201)
留言3則, 2人參與, 1年前最新討論串2/2 (看更多)
※ 引述《Pettitte1 (低調奢華有內涵)》之銘言: : 是這樣的 目前已經會用 multiprocessing.pool 來取得結果 : 範例 code 如下 : https://paste.ee/p/DY72q : 我可以在 if __name__ == '__main__': 之後取得我要的 data "d" : 如果我後續想要對 d 進行其他各種運算 : 是否就只能在 if __name__ == '__main__': 縮排內進行各種動作? : 能夠不用 if __name__ == '__main__': : 就直接 run m() 這個 function 嗎? 可以考慮 concurrent.futures 應該算python新推的併行處理庫 用意就是取代multiprocessing 封裝成更高階API使用上更便利 改了一下 不用 if __name__ == '__main__' 也能跑 https://paste.ee/p/5vjuQ 不過這是創 thread 不是 process 如果一定要process 那就沒辦法了 另外 ThreadPoolExecutor() 裡面能塞你要創幾個threads 像是 ThreadPoolExecutor(max_workers=50) 就是 python 要求建議 3.7 以上 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.15.47.71 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1669896389.A.44D.html

12/01 20:13, 1年前 , 1F
這樣用thread有繞開硬件鎖?
12/01 20:13, 1F
跟 multiprocessing 一樣 threads沒有 但 process 有 不過我實際跑任務也是會平均分配給CPU 不確定GIL影響範圍 ※ 編輯: surimodo (39.15.47.71 臺灣), 12/01/2022 20:21:32

12/02 21:05, 1年前 , 2F
感謝回覆 是可以用的
12/02 21:05, 2F

12/02 21:22, 1年前 , 3F
不過時間反而變長了 應該也是跟Threading一樣的問題
12/02 21:22, 3F
文章代碼(AID): #1ZY9Z5HD (Python)
文章代碼(AID): #1ZY9Z5HD (Python)