One, Process lock
From multiprocessing import Process,lock
def lock_f (l,i):
L.acquire ()
Try
Print ("Multip-%s"% i)
Finally
L.release ()
If __name__== "__main__":
Lock = Lock ()
For NUM in range (10):
Process (Target=lock_f,args = (lock,num)). Start ()
Second, Process pool
From multiprocessing import Process,pool,freeze_support
Import Time
Import OS
def Foo (i):
time.sleep (1)
print ("In process!", Os.getpid ())
return i+100
def Bar (args):
print ("-->exec done!", Args,os.getpid ())
if __name__== "__main__":
pool = Pool (processes=2) #允许进程池同时放入2个进程;
print ("Main process pool:", Os.getpid ())
For I in Range (Ten):
#pool. Apply (func = foo,args= (i,)) #apply支持串行;
#pool. Apply_async (func=foo,args= (i)) #apply_async支持并行;
Pool.apply_async (func=foo,args= (i,), Callback=bar)
print ("end!")
pool.close ()
Pool.join () #进程池中进程, after execution, close again; If you look at the line, the program shuts down directly.
Process locks and shared pools