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()
 
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()  # 进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。
进程池
原文地址:https://www.cnblogs.com/anhao-world/p/13742142.html