python 进程锁和进程池简单使用
#进程锁
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()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from multiprocessing import Process, Pool,freeze_support#windows上必须导入freeze_support,否则会报错 import time import os def Foo(i): time.sleep(2) print('in process',os.getpid()) return i + 100 def Bar(arg): print('-->exec done:', arg,os.getpid()) if __name__ =='__main__':#区分主动执行这个脚本还是被动调用,主动会执行下面代码,调用是不会执行 freeze_support() pool = Pool(5)#允许进程池同时放入5个进程 print('主进程',os.getpid()) for i in range(10): pool.apply_async(func=Foo, args=(i,), callback=Bar)#callback回调 # pool.apply(func=Foo, args=(i,))#同步执行,串行 # pool.apply_async(func=Foo, args=(i,))#异步执行,并行 print('end') pool.close() pool.join() # 进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。