python進程池和進程鎖


1.進程鎖:
from multiprocessing import Process, Lock

def f(l, i):
  l.acquire()
  print('hello world', i)
  l.release()

if __name__ == '__main__':
  lock = Lock()

for num in range(10):
  Process(target=f, args=(lock, num)).start()

2.進程池:
from multiprocessing import Pool
import time

def Foo(i):
  time.sleep(2)
  print(i+100)

#允許進程池里同時放入5個進程
pool = Pool(5)
for i in range(10):
  #並行執行
  pool.apply_async(func=Foo,args=(i,))

pool.close()
pool.join() #進程池中進程執行完畢后再關閉,如果注釋,那么程序直接關閉。

print('end')


3.進程池與進程鎖:
from multiprocessing import Pool, Manager
import time

def Foo(i, l):
  l.acquire()
  time.sleep(2)
  print(i+100)
  l.release()

lock = Manager().Lock()
#允許進程池里同時放入5個進程
pool = Pool(5)
for i in range(10):
  #並行執行
  pool.apply_async(func=Foo,args=(i, lock, ))

pool.close()
pool.join() #進程池中進程執行完畢后再關閉,如果注釋,那么程序直接關閉。

print('end')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM