作者doun (噜啦噜啦勒)
看板Python
标题[问题] 多线程可运作但多进程无法
时间Fri Mar 24 21:51:46 2017
最近在看网路影片学习使用多线程与多进程时,
多线程的程式码可以顺利运作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://webptt.com/cn.aspx?n=bbs/Python/M.1490363508.A.8B5.html
1F:推 zerof: multiprocessing 的 result 要自己 aggregate, multithread 03/24 22:12
2F:→ zerof: 是 sharing 的所以 result 会在一起 03/24 22:12
3F:→ zerof: 不过也许实际上不是这个问题(?) 毕竟描述不清楚无法确定你 03/24 22:17
4F:→ zerof: 所谓被跳过是指什麽 03/24 22:17
因为我的crop程式是做一个截图的动作,并不会回传值
※ 编辑: doun (27.105.40.31), 03/24/2017 22:19:51
5F:→ zerof: 两个做法换看看就知道是不是你变数参考的问题了 03/24 22:29