進程鎖進程池

多進程鎖
from multiprocessing import Process, Lock

def 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 #返回給callbackBar

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()
#進程池中進程執行完畢後再關閉,如果註釋,那麼程序直接關閉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章