多进程锁from multiprocessing import Process, Lockdef f(l, i): l.acquire() try: print('hello world', i) finally: l.release()if __name__ == '__main__': lock = Lock() for num in range(100): Process(target=f, args=(lock, num)).start()
多进程池 from multiprocessing import Process, Pool import time,os def Foo(i): time.sleep(2) print("in process:",os.getpid()) return i + 100 #返回给callback的Bar def Bar(arg): print('-->exec done:', arg,os.getpid()) if __name__=="__main__": pool=Pool(processes=5) #允许进程池里同时放入5个进程 print("主进程:",os.getpid()) for i in range(10):#callback主进程回调 子进程每执行完一个func=Foo, args=(i,),主进程在回调一次Bar pool.apply_async(func=Foo, args=(i,), callback=Bar)#异步执行 并行 #pool.apply(func=Foo, args=(i,))#同步执行 串行 不支持callback print('end') pool.close() pool.join() #进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。