公司网站建设 阿里,免费源码下载哪个好,百度广告投放代理商,手机网站和pc网站进程池的创建
apply()
apply()方法用于向进程池提交一个任务#xff0c;并等待任务完成并返回结果。
apply_async()
apply_async()方法用于向进程池提交一个异步任务#xff08;即无需等待任务完成#xff09;#xff0c;将任务加入到进程池的队列里#xff0c;并立即…进程池的创建
apply()
apply()方法用于向进程池提交一个任务并等待任务完成并返回结果。
apply_async()
apply_async()方法用于向进程池提交一个异步任务即无需等待任务完成将任务加入到进程池的队列里并立即返回一个AsyncResult对象。
# Pool 表示一个工作进程池
# 如果要启动大量的子进程可以用进程池的方式批量创建子进程
from multiprocessing.pool import Pool
from time import sleep, time
import random,osdef run(name):print(f{name},子进程开始进程ID:{os.getpid()})start time()sleep(random.choice([1,2,3,4]))end time()print(f{name}子进程结束进程ID:{os.getpid()},耗时{end-start})if __name__ __main__:print(父进程开始)# 创建多个进程表示可以同时执行的进程数量默认大小时cpu的数量p Pool(4)for i in range(10):# 创建进程放入进程池统一管理p.apply_async(run,args(i,))# 如果我们用的时进程池再调用join()之前必须先调用closs()# 并且closs()之后不能再继续往进程池添加新的进程了p.close()# 进程池对象调用join()会等待进程池中所有进程都结束完毕再去结束父进程p.join()print(父进程结束)p.terminate()# close() 如果我们用的是进程池再调用join()之前必须要先close()
# 并且closs()之后不能再继续往进程池添加新的进程了
# join():进程池对象调用join()会等待进程池中所有进程都结束完毕再去结束父进程
# terminate()一旦运行到此步不管任务是否完成立即终止timeout的使用
from multiprocessing import Pool
import timedef f(x):return x*xif __name__ __main__:with Pool(processes 4) as pool: # 进程池包含4个进程result pool.apply_async(f,args(10,)) # 执行1个子进程print(result.get(timeout1)) # 显示执行结果result pool.apply_async(time.sleep,args(10,))print(result.get(timeout1)) # raise multiprocessing.TimeoutErrormap的使用
map()方法用于向进程池提交多个任务并等待所有任务完成并返回结果。
import multiprocessing as mpdef task(num):return num * numif __name__ __main__:pool mp.Pool()res pool.map(task, [1, 2, 3, 4, 5])print(res)from multiprocessing import Pool
import timedef f(x):return x * xif __name__ __main__:with Pool(processes4) as pool:print(pool.map(f,range(10))) # 输出[0,1,4.....81]it pool.imap(f,range(10)) # map输出列表,imap输出迭代器print(it)print(next(it)) # 0print(next(it)) # 1print(it.next(timeout 1)) # 4map_async()
map_async()方法用于向进程池提交多个异步任务即无需等待任务完成并立即返回一个AsyncResult对象。
import multiprocessing as mpdef task(num):return num * numif __name__ __main__:pool mp.Pool()res pool.map_async(task, [1, 2, 3, 4, 5])print(res.get())close()和join()
close()方法用于向进程池发送一个停止信号表示不再接受新任务。 join()方法则用于等待进程池中的所有任务完成。
import multiprocessing as mpdef task(num):return num * numif __name__ __main__:pool mp.Pool()res pool.map_async(task, [1, 2, 3, 4, 5])pool.close()pool.join()print(res.get())Python进程池是一种用于在Python中实现并发任务的机制。
在Python中我们可以通过multiprocessing模块提供的Pool类来实现进程池。
进程池提供了多种方法来处理任务包括apply()、apply_async()、map()、map_async()等。
在使用进程池时需要注意不能再向进程池中提交新的任务否则会引发异常。同时需要避免使用全局变量以防止出现不一致的结果。