[問題] subprocess可以當作subprocess的輸入嗎?
各位好,我在運用multiprocessing的時候遇到一個問題
程式架構如下:
main -----> subprocess(計算者)
|
|
|----> subprocess(產生資料者)
. .
. .
. .
-----> subprocess(產生資料者)
運作方式是,main會產生一個subprcess,這個prcoess會負責接收輸入資料並計算然後
回傳
然後main會產生很多個subprcoess負責產生資料,這幾個負責產生資料後,將資料
餵給第一個計算者得到回傳後return給main
我的做法是:
第一個解答者用p = Popen產生,並且用PIPE做輸入輸出的溝通
後面的用pool然後pool.apply_async將p作為args輸入
這個做法會拋出一個錯誤:typeerror: can't pickle _thread.lock objects
google了一下好像是process這個物件不可序列化所以不能當作process的輸入
因為計算者會用到比較多的資源不能每個產生資料者都配一個計算者,所以我當初才會
想用這個架構,藉由subprocess之間互相溝通來提升程式的效率
不知道要怎麼樣才可以達到我的目的,希望各位前輩幫忙解惑,謝謝。
--
噓
07/26 01:40,
07/26 01:40
→
07/26 01:42,
07/26 01:42
→
07/26 01:43,
07/26 01:43
→
07/26 01:51,
07/26 01:51
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.21.240
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1531972455.A.B2B.html
推
07/19 13:26,
7年前
, 1F
07/19 13:26, 1F
→
07/19 13:27,
7年前
, 2F
07/19 13:27, 2F
抱歉,剛剛想到比較正確的說法,早上頭昏昏的忘記了XD
我有一個Producer&Consumer的程式,我的問題是:Consumer占用的資源很大,不能透過
增加多個Consumer來加速整體的進行而Producer占用的資源不多可以有很多個。
我用multiprocessing分別創建Producer&Consumer的subprocess,但是在想要讓
Producer將資料丟給Consumer的時候失敗了,因為process不能作為agrs
所以應該是需要一個中間的buffer來幫忙傳遞資料,就像celery的borker一樣
感謝樓上大大,我來研究一下
→
07/19 15:30,
7年前
, 3F
07/19 15:30, 3F
※ 編輯: gigayaya (36.231.21.240), 07/19/2018 20:31:37
→
07/19 20:49,
7年前
, 4F
07/19 20:49, 4F
→
07/19 23:13,
7年前
, 5F
07/19 23:13, 5F
→
07/19 23:13,
7年前
, 6F
07/19 23:13, 6F
推
07/20 08:46,
7年前
, 7F
07/20 08:46, 7F
→
07/20 08:46,
7年前
, 8F
07/20 08:46, 8F
Python 近期熱門文章
PTT數位生活區 即時熱門文章