Python进程池Pool

摘要:
线程具有类似的信号量来控制“”窗口。必须添加语句:time。sleep(2)#print(os.getpid())returni+100defBar(arg):print(“helloworld”,free_support()pool=pool(processs=5)#允许同时将五个进程放入进程池print(os.getpid)foriinrange(10):
'''
进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大
避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量
ps:线程没有池,因为线程启动开销小,线程有类似信号量来控制
'''
'''
windows上必须加语句:
if __name__ == '__main__':
    freeze_support()
'''
from multiprocessing import Pool,freeze_support
import time
import os

def Foo(i):
    time.sleep(2)
    # print(os.getpid())
    return i+100
def Bar(arg):
    print("hello world",arg)
    print(os.getpid())

if __name__ == '__main__':
    freeze_support()
    pool = Pool(processes=5)  # 允许进程池里同时放入5个进程
    print(os.getpid())
    for i in range(10):  # 启动了但是还没被允许,因为同一时间只有5个在运行
        # pool.apply_async(func=Foo, args=(i,)) # 并行
        # pool.apply(func=Foo, args=(i,))  # 串行
        pool.apply_async(func=Foo, args=(i,),callback=Bar) # 并行,并且当且仅当Foo执行完后再执行Bar
        # 回调应用场景:批量备份完后,往数据库写日志,但是为啥不让子线程写,而让父进程写?因为父进程里写日志只连一次,子进程里每次都连
    print('end')
    pool.close()
    pool.join() # 这里要先关闭再JOIN。进程池中进程执行完后再关闭,如果注释,那么程序直接关闭

免责声明:文章转载自《Python进程池Pool》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[源码解析] PyTorch 分布式(16) 使用异步执行实现批处理 RPC实习小白::(转) 骨骼动画详解-Cocos Studio下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

bash反弹shell检测

1、进程 file descriptor 异常检测 检测 file descriptor 是否指向一个socket 以重定向+/dev/tcp Bash反弹Shell攻击方式为例,这类反弹shell的本质可以归纳为file descriptor的重定向到一个socket句柄。 2、检测 file descriptor 是否指向一个管道符(pipe) 对于利...

根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax

基本介绍 XmlHttpRequest XmlHttpRequest是JavaScript中原生的,历史悠久的一种发送网络请求的方案。 基本上所有前端框架对于网络请求的部分都是基于它来完成的。 在本章节中我们将了解它的基本用法,并且会实现一个与jQuery.ajax功能百分之九十相似的网络请求组件。 我是没有读过jQuery.ajax源码的,并且我也不是一...

字典(dict),增删改查,嵌套

一丶字典  dict 用{}来表示  键值对数据  {key:value}  唯一性   键  都必须是可哈希的  不可变的数据类型就可以当做字典中的键   值  没有任何限制 二丶字典的增删改查  1.增     dic[key] = value     dic.setdefault(key,value)     如果键在字典中存在,则不进行任何操作,否...

【转】WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

一.前言   申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等。 本文主要内容: DataGrid自定义样式; ListView自定义样式; 二.DataGrid自定义样式 DataGrid是常用的数据列表显示控件,先看看实现的效果(动态图,有点大): DataGrid控件样式结构包括以下几个部分:...

lodash按需引入

lodash提供了很多可用的方法供我们使用,绝对是一个很好用且用起来得心应手的工具库。但是同时,lodash的体积也不小,我们项目中使用的大概522K,可能只是使用了几个方法,但是却把整个lodash库引入了。为了吃几条鱼,就承包了整个鱼塘,代价有点大呀! 对于这个问题,有几种方案可供选择。 一.引入单个函数  lodash整个安装完之后,引用方式: lo...

bat批量备份手机APP

  adbPath = ADB工具包文件夹(adb+aapt)backupPath = apk备份文件夹 @echo off & chcp 65001 & cls & cd /d "%~dp0" setlocal enabledelayedexpansion REM adb tool path set "adbPath=D:soft...