python之程序池
阿新 • • 發佈:2018-11-10
程序池:
pool
就是一堆事先建立好的程序。
程序池內部維護一個程序序列,當有程式要使用程序(執行)時,則去程序池中獲取一個程序,如果程序池序列中沒有可供使用的進程序,那麼程式就會等待,直到程序池中有可用程序為止。
程序池裡有兩個方法:apply序列和apply_async並行
from multiprocessing import Process, Pool import time,os def Foo(i): time.sleep(1) return i + 100 def Bar(arg): print('-->exec done:', arg) if __name__ == '__main__': pool = Pool(5) for i in range(10): pool.apply_async(func=Foo, args=(i,), callback=Bar) # callback回撥,執行完Foo再執行Bar # 用於執行完一些事情自動再幹什麼,比如批量備份,備份完自動往資料庫寫一條日誌 #pool.apply_async(func=Foo, args=(i,)) #並行 pool.apply(func=Foo, args=(i,)) # 序列 print('end') pool.close() # 必須先close在join pool.join() # 程序池中程序執行完畢後再關閉,如果註釋掉,那麼程式直接關閉。 print('enddd')