一、多线程与多进程的对比
2、python多进程
虽然python中没有提供直接的进程调用函数,但是标准库中的模块提供能更多更方便的选择。 ProcessPoolExecutor进程池,与 multiprocessing标准的多进程模块。其实ProcessPoolExecutor也是对multiprocessing的封装调用,并且与ThreadPoolExecutor线程池提供的接口类似。而multiprocessing则更加底层。
<1>、进程编程
import time def get_html(n): time.sleep(n) print("sub_progress success") return n if __name__ == "__main__": progress = multiprocessing.Process(target=get_html, args=(2,)) print(progress.pid) # 打印结果为None,因为这个时候进程还未开启 progress.start() # 进程开启 print(progress.pid) progress.join() print("main progress end") # 输出 None 5056 sub_progress success main progress end<2>、使用进程程池
import time def get_html(n): time.sleep(n) print("sub_progress success") return n if __name__ == "__main__": #使用进程池 pool = multiprocessing.Pool(multiprocessing.cpu_count()) # 可以知名进程数,默认等于CPU数 result = pool.apply_async(get_html, args=(3,)) #等待所有任务完成 pool.close() pool.join() print(result.get()) # 输出 sub_progress successhttps://www.cnblogs.com/welan/p/10003312.html
