作者查詢 / LiloHuang

總覽項目: 發文 | 留言 | 暱稱
作者 LiloHuang 在 PTT [ Python ] 看板的留言(推文), 共373則
限定看板:Python
Re: [問題] python multiProcess效能很差?
[ Python ]31 留言, 推噓總分: +5
作者: ntuleo - 發表於 2015/04/29 09:42(11年前)
9FLiloHuang: 你不應該嘗試去修改輸入的資料,除非是 Shared memory04/29 20:01
10FLiloHuang: 無論是 multiprocess 或者 multithread 的實作裡04/29 20:02
11FLiloHuang: 你得想辦法讓每個 process (或 thread) 各自跑各自的04/29 20:02
12FLiloHuang: 等到跑完之後,再將資料做合併,才是一個比較好的方式04/29 20:03
13FLiloHuang: 當然這個方法未必適用於你要解決的問題,只是一旦使用04/29 20:03
14FLiloHuang: Shared memory 之後,你就得進行 Synchronization 保護04/29 20:04
15FLiloHuang: 過度的 Synchronization 會造成 CPUs 浪費時間在競爭鎖04/29 20:04
16FLiloHuang: 舉個例子來說,假設輸入是 a-z 的字串,平行的轉成大寫04/29 20:05
17FLiloHuang: from multiprocessing.pool import ThreadPool04/29 20:05
18FLiloHuang: pool = ThreadPool()04/29 20:05
19FLiloHuang: print reduce(lambda x,y: x+y, pool.map(04/29 20:05
20FLiloHuang: lambda x:x.upper(), map(chr, range(97, 123))))04/29 20:05
21FLiloHuang: 上述的範例內,輸入是一個 list (分別為 a-z 字元)04/29 20:07
22FLiloHuang: 輸出也是一個 list (已經轉成 A-Z),再用 reduce 合併04/29 20:07
23FLiloHuang: 這就是一個概念,想要平行處理就要讓 task 真正的平行04/29 20:07
24FLiloHuang: 然而上述的例子,由於並不是 CPU intensive 的計算04/29 20:09
25FLiloHuang: 開了 thread (或 process) 反而會比沒開來的慢04/29 20:09
26FLiloHuang: 我無法回答你的程式為何會如此慢,建議貼 GitHub Gist04/29 20:10
27FLiloHuang: 如果你能附上完整的程式碼,以及可重現問題的輸入資料04/29 20:11
28FLiloHuang: 相信其他板友會比較有機會能夠幫你找到問題的癥結點04/29 20:12
29FLiloHuang: pool.map(...) 的概念是有輸入跟輸出,要特別留意這點04/29 20:16
30FLiloHuang: 另外實務上,請盡量避免使用 ThreadPool,改用 Pool04/29 20:17
31FLiloHuang: 我只是為求簡便示範給你看,以免實際程式被 GIL 給拖慢04/29 20:17
[問題] python multiProcess效能很差?
[ Python ]18 留言, 推噓總分: +3
作者: ntuleo - 發表於 2015/04/28 11:02(11年前)
10FLiloHuang: Python Concurrency From the Ground Up - PyCon 201504/28 22:39
11FLiloHuang: 看看 David Beazley 大師的影片 http://goo.gl/oCuZaJ04/28 22:39
12FLiloHuang: 基本上 Python 的 multiprocessing 是以 tasks 為單位04/29 00:22
13FLiloHuang: 你必須要自己先把工作轉化成一堆 task 再來進行平行04/29 00:22
14FLiloHuang: 畢竟這不像 OpenMP 加個 #pragma omp parallel 就會動04/29 00:23
15FLiloHuang: 就像 ccwang002 提到的,你的 task 目前只有一個...04/29 00:24
16FLiloHuang: 你可以嘗試著把第一層迴圈展開,換成用 map 的寫法就好04/29 00:26
17FLiloHuang: 處理的 func 裡面不要去存取共享變數,讓每個 process04/29 00:32
18FLiloHuang: 都能夠獨立的跑完它的結果,之後再把結果進行 reduce04/29 00:33
[問題] 有無幫助規劃軟體架構的服務
[ Python ]14 留言, 推噓總分: +8
作者: walelile - 發表於 2015/04/24 21:12(11年前)
1FLiloHuang: 我推薦 http://komodoide.com/ 還有 GUI debugger04/24 21:33
2FLiloHuang: 如果不需要 GUI debugger 可以考慮免費的 Komodo Edit04/24 21:40
3FLiloHuang: http://goo.gl/cM65kd 當然花錢買的版本還是好用很多04/24 21:40
4FLiloHuang: 至於流程圖分析工具,https://scitools.com/ 是首選04/24 21:45
[問題] 關於HTTP與Socket負載測試
[ Python ]5 留言, 推噓總分: +3
作者: tas72732002 - 發表於 2015/04/18 08:45(11年前)
1FLiloHuang: ab -c10000 -n200000 http://foo.bar/04/18 10:20
2FLiloHuang: 或者可使用 https://loadimpact.com/ 線上工具進行測試04/18 10:20
[心得] 需要速度請選 RPython
[ Python ]12 留言, 推噓總分: +5
作者: ResolaQQ - 發表於 2015/03/29 00:49(11年前)
6FLiloHuang: 其實在選直譯器實作,還得考慮到穩定性跟未來的維護04/01 19:23
11FLiloHuang: 同意 :) 其實如果很在意速度,通常 Python 不會被考慮04/01 22:35
12FLiloHuang: 相反的,撇開有 GIL 限制,寫 Python 還是很美好的 :)04/01 22:56
[問題] Python可以執行excel的巨集嗎?
[ Python ]2 留言, 推噓總分: +2
作者: pepego - 發表於 2015/03/18 22:26(11年前)
1FLiloHuang: 參考類似問題在 StackOverflow http://goo.gl/vmtFA903/18 22:34
[問題] 請問在 PyPy 上要怎麼寫才跑得快?
[ Python ]9 留言, 推噓總分: +2
作者: os653 - 發表於 2015/03/03 14:15(11年前)
6FLiloHuang: 這兒有一些是專門針對 PyPy JIT http://goo.gl/ayctXx03/03 21:11
7FLiloHuang: 至於拆開後有變快,多少跟 JIT compiler 本身能力有關03/03 21:16
[問題] 物件導向回傳問題
[ Python ]8 留言, 推噓總分: +1
作者: NTUHensen - 發表於 2015/02/19 12:03(11年前)
2FLiloHuang: 會是一個 type object02/19 12:59
[問題] tkinter text 即時刷新?
[ Python ]19 留言, 推噓總分: +4
作者: asaaaas - 發表於 2015/02/16 11:45(11年前)
15FLiloHuang: 設定新的 text 後,呼叫 root.update() 來刷新內容02/17 22:50
16FLiloHuang: 建議把文章標題以及內容修正一下,方便其他板友觀看02/17 22:51
19FLiloHuang: 不客氣 :)02/18 22:03
Re: [問題] c調用py產生的exe有辦法包入py檔嗎?
[ Python ]4 留言, 推噓總分: +1
作者: opengood5566 - 發表於 2015/02/15 19:38(11年前)
1FLiloHuang: 你的 Python 應該不是自編譯的,因此你不應該使用02/15 19:41
2FLiloHuang: Debug 模式來編譯你的專案。請改用 Release 模式就可以02/15 19:42
3FLiloHuang: 如果你有把 python27.lib 複製成 python27_d.lib02/15 19:43
4FLiloHuang: 也請不要這麼做,這樣就會造成你現在的問題。02/15 19:43