帮助文档:点击打开链接
mutiprocessing.Process=单进程,多进程 mutiprocessing.Lock=进程锁 mutiprocessing.Semaphore=N锁 Pool.apply_async=得到返回结果 Pool.map=批量进程
import multiprocessing import cv2 def f(x): return x*2 # img = cv2.imread(x, cv2.IMREAD_COLOR) # cv2.imshow(x, img) # cv2.waitKey() # return img
def f(l, i): l.acquire() print('hello world', i) time.sleep(1) l.release()if __name__ == '__main__':
# lock = Lock() # s= time.time() # p=[] # for num in range(10): # ptemp=Process(target=f, args=(lock, num)) # ptemp.start() # p.append(ptemp) # for p1 in p: # p1.join() # print(time.time()-s)# cores = multiprocessing.cpu_count() # print(cores) # pool = multiprocessing.Pool(processes=4) xs = range( 10) # # # # method 1: map # # print(pool.map(f, xs)) # prints [0, 1, 4, 9, 16] # # for y in pool.imap(f, xs): # # print (y ) # 0, 1, 4, 9, 16, respectively # # method 3: imap_unordered # for y in pool.imap_unordered(f, xs): # print(y) # may be in any order # pool.close() # pool.join() p1 = multiprocessing.Process( target=f, args=( 1,)) p2 = multiprocessing.Process( target=f, args=( 2,)) p1.start() p2.start() for p in multiprocessing.active_children(): print(p.name,p.pid,p) p1.join() p2.join()