多进程锁
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() #进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。