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')