作者surimodo (搖滾少女!! 活力棉花糖!!)
看板Python
標題Re: [問題] multiprocessing.pool能不用name==main嗎
時間Thu Dec 1 20:06:26 2022
※ 引述《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
→ chang1248w: 這樣用thread有繞開硬件鎖? 12/01 20:13
跟 multiprocessing 一樣
threads沒有
但 process 有
不過我實際跑任務也是會平均分配給CPU
不確定GIL影響範圍
※ 編輯: surimodo (39.15.47.71 臺灣), 12/01/2022 20:21:32
推 Pettitte1: 感謝回覆 是可以用的 12/02 21:05
推 Pettitte1: 不過時間反而變長了 應該也是跟Threading一樣的問題 12/02 21:22