C/C++教程

关于进程里面的apply和apply_async的理解

本文主要是介绍关于进程里面的apply和apply_async的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在多进程中,开辟pool的进程池

from multiprocessing import Pool
import os, time, random

def worker(msg):
    start = time.time()
    print("%s开始执行,进程号为%d"%(msg,os.getpid()))
    time.sleep(random.random()*2)
    stop = time.time()
    print(msg,"执行完毕,耗时%0.2f"%(stop-start))

def main():
    po = Pool(3)
    for i in range(10):
        po.apply_async(worker,(i,))
    print("-----start-------")
    po.close()
    po.join()
    print("-------end----------")

if __name__ == '__main__':
    main()
使用apply_async执行之后,各进程会根据是否的到分配进而执行,不会按照顺序进行执行,属于是谁拿到谁用一个进程在执行到结束过程中,可能会穿插有其他进程的执行和结束

而使用apply,进程会按照顺序执行,这就会浪费大量的时间在进程等待完成中,比较消耗时间。
这篇关于关于进程里面的apply和apply_async的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!