您好,登錄后才能下訂單哦!
多進程鎖
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 #返回給callback的Bar
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() #進程池中進程執行完畢后再關閉,如果注釋,那么程序直接關閉。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。