[問題] 多線程可運作但多進程無法

看板Python作者 (嚕啦嚕啦勒)時間8年前 (2017/03/24 21:51), 8年前編輯推噓1(104)
留言5則, 1人參與, 最新討論串1/1
最近在看網路影片學習使用多線程與多進程時, 多線程的程式碼可以順利運作crop_1~crop_4 但在多進程的時候卻感覺會跳過運作程式, 我確定有運算到if裡面的程式碼,但process的程式感覺就被跳過了 不曉得我是哪裡寫錯 多線程時的code: def main(): Job_1 = threading.Thread(target = crop_1,name = 'T1') Job_2 = threading.Thread(target = crop_2,name = 'T2') Job_3 = threading.Thread(target = crop_3,name = 'T3') Job_4 = threading.Thread(target = crop_4,name = 'T4') Job_1.start() Job_2.start() Job_3.start() Job_4.start() Job_1.join() Job_2.join() Job_3.join() Job_4.join() start_x = pyautogui.locateOnScreen(r'C:\Users\start.png')[0] start_y = pyautogui.locateOnScreen(r'C:\Users\start.png')[1] if __name__ == '__main__': img = pyautogui.screenshot() main() 多進程時的code,將執行的程序都放進if下面 if __name__ == '__main__': start_x = pyautogui.locateOnScreen(r'C:\Users\start.png')[0] start_y = pyautogui.locateOnScreen(r'C:\Users\start.png')[1] img = pyautogui.screenshot() Job_1 = Process(target = crop_1) Job_2 = Process(target = crop_2) Job_3 = Process(target = crop_3) Job_4 = Process(target = crop_4) Job_1.start() Job_2.start() Job_3.start() Job_4.start() Job_1.join() Job_2.join() Job_3.join() Job_4.join() -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.105.40.31 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1490363508.A.8B5.html

03/24 22:12, , 1F
multiprocessing 的 result 要自己 aggregate, multithread
03/24 22:12, 1F

03/24 22:12, , 2F
是 sharing 的所以 result 會在一起
03/24 22:12, 2F

03/24 22:17, , 3F
不過也許實際上不是這個問題(?) 畢竟描述不清楚無法確定你
03/24 22:17, 3F

03/24 22:17, , 4F
所謂被跳過是指什麼
03/24 22:17, 4F
因為我的crop程式是做一個截圖的動作,並不會回傳值 ※ 編輯: doun (27.105.40.31), 03/24/2017 22:19:51

03/24 22:29, , 5F
兩個做法換看看就知道是不是你變數參考的問題了
03/24 22:29, 5F
文章代碼(AID): #1OrIHqYr (Python)
文章代碼(AID): #1OrIHqYr (Python)