第一,进程锁,本来进程是各自的,本不要加锁,但是在屏幕上输出打印时为了防止混乱,在进程模块有一个锁函数,使用如下,需要说明是在py3以上版本没 有出现在过屏幕输出混乱,可以不加,这方法不重要,但是作为学习,了解一下好,输出顺序乱是进程运算,我这儿说的是print("")这个输出!!
pfrom multiprocessing import Process,Lock
def f(l,i):
l.acquire()
print("hello world")
l.release()
if __name__ == '__main__':
lock = Lock()
for num in range(10):
Process(target=f,args=(lock,num)).start()
python进程池使用方法:from
multiprocessing
import
Process,Pool
import
time
def
Foo(i):
time.sleep(
2
)
return
i
+
100
def
Bar(arg):
print
(
'-->exec done:'
,arg)
if __name__ == '__main__':
#用了进程池, 上面那句必要加,不加报错
pool
=
Pool(
5
)
for
i
in
range
(
10
):
async并行,pool.apply串行
pool.apply_async(func
=
Foo, args
=
(i,),callback
=
Bar)
#pool.apply(func=Foo, args=(i,))
print
(
'end'
)
pool.close()
pool.join()
#进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。