使用Unix系统的一个名为forking的功能,您可以从父进程读取(而不是写入)数据,开销为零。通常,您将不得不复制数据,但是在Unix中分叉一个进程允许您绕过这个问题。

使用此方法,池中的作业可以访问整个输入字符串并提取它将要处理的部分。然后,它可以单独拆分和解析字符串的这一部分,并返回其部分中整数的总和。from multiprocessing import Pool, cpu_count

from time import time

def serial(data):

return sum(map(int, data.split()))

def parallel(data):

processes = cpu_count()

with Pool(processes) as pool:

args = zip(

["input_"] * processes, # name of global to access

range(processes), # job number

[processes] * processes # total number of jobs

)

return sum(pool.map(job, args, chunksize=1))

def job(args):

global_name, job_number, total_jobs = args

data = globals()[global_name]

chunk = get_chunk(data, job_number, total_jobs)

return serial(chunk)

def get_chunk(string, job_number, total_jobs):

"""This function may mess up if the number of integers in each chunk is low (1-2).

It also assumes there is only 1 space separating integers."""

approx_chunk_size = len(string) // total_jobs

# initial estimates

start = approx_chunk_size * job_number

end = start + approx_chunk_size

if start and not string.startswith(" ", start - 1):

# if string[start] is not beginning of a number, advance to start of next number

start = string.index(" ", start) + 1

if job_number == total_jobs:

# last job

end = None

elif not string.startswith(" ", end - 1):

# if string[end] is part of a number, then advance to end of number

end = string.index(" ", end - 1)

return string[start:end]

def timeit(func, *args, **kwargs):

"Simple timing function"

start = time()

result = func(*args, **kwargs)

end = time()

print("{} took {} seconds".format(func.__name__, end - start))

return result

if __name__ == "__main__":

# from multiprocessing.dummy import Pool # uncomment this for testing

input_ = "1000000000 " * int(1e6)

actual = timeit(parallel, input_)

expected = timeit(serial, input_)

assert actual == expected

python计算并返回任意多个整数的和_利用Python的多重处理方法计算一个长输入lin的整数和...相关推荐

  1. python编写递归函数、求斐波那契数列_利用Python实现斐波那契数列的方法实例

    今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 ...

  2. python输入一个整数倒序输出_利用Python实现倒序任意整数

    这是很早以前学习C时候做过的一个练习题,题目的要求大概是把用户输入的三位数倒序输出,比如说用户输入123,然后程序应该输出的结果是321.如果遇到用户输入100,那么程序应该输出1.然后我给扩展一下, ...

  3. 蒙特卡洛python求解派_利用蒙特卡洛(Monte Carlo)方法计算π值[ 转载]

    圆周率π是一个无理数,没有任何一个精确公式能够计算π值,π的计算只能采用近似算法. 国际公认的π值计算采用蒙特卡洛方法. 一.蒙特卡洛方法 蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试 ...

  4. python爬取王者皮肤别人可以看见效果吗_利用python爬取王者荣耀英雄皮肤图片

    前两天看到同学用python爬下来LOL的皮肤图片,感觉挺有趣的,我也想试试,于是决定来爬一爬王者荣耀的英雄和皮肤图片. 然后,简单的分析一下结构,看看是否有反爬机制. 之后,在上网查阅资料后,发现所 ...

  5. python实现录音并去燥_python实现录音并去燥_利用Python进行录音和音频分析

    pyaudio简介 Python有个很强大的处理音频的库pyqudio, 使用pyaudio库可以进行录音,播放,生成wav文件等等.更多介绍可以查阅官方文档. pyaudio安装 各平台安装方法 w ...

  6. python汇率转换_利用Python中的Xpath实现一个在线汇率转换器

    前言 在之前的语法里面,我们记得有一个初识Python之汇率转换篇,在那个程序里面我们发现可以运用一些基础的语法写一个汇率计算,但是学到后面的小伙伴就会发现这个小程序有一定的弊端. 首先,它不可以实时 ...

  7. 如何用python赚钱_利用python能怎么挣钱

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 6年python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫 ...

  8. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  9. python计算信息增益_利用Python提取ABAQUS的计算结果(ODB)信息、体积、应变等变化(一)...

    00 实例模型 一个金属长方体,我们需要对其做拉伸的加载约束示意图如图1,并在完成后采用Python命令流读取参考点的位移.体积.应变随加载时间的变化情况. 图1 金属长方体约束加载示意图 01 Py ...

最新文章

  1. C++在堆区创建数组
  2. UE4全景插件Nvidia Ansel Photography
  3. 联想超融合,打通智慧医疗的“症结”
  4. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  5. 如何使ArrayList 线程安全
  6. Linux驱动开发常用头文件
  7. pcb过孔漏铜_【企业资讯】大正瑞地:专注PCB药水二十年,品质、性能可靠
  8. 【luogu1337】【JSOI2004】平衡点 / 吊打XXX(模拟退火)
  9. Program Library HOWTO(2)
  10. java.lang.NoSuchMethodError: org.jaxen.dom4j.DocumentNavigator.getInstance()【可能的解决办法】
  11. 深度学习入门——03 MNIST手写数字图像集识别实验
  12. android 自定义viewgroup 布局,Android 自定义ViewGroup(一)
  13. (Java-11)简单的银行账户模拟
  14. cf Educational Codeforces Round 49 D. Mouse Hunt
  15. php钓鱼怎么使用方法,盘钩使用方法
  16. ConvNeXt:新一代卷积网络,还不是ViT的时代(代码开源)
  17. 2022.1.25复盘
  18. 理想点法matlab p趋向无穷大,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
  19. 国产轻量级BI平台CBoard的安装和初步使用介绍
  20. 循序渐进学spring security 第八篇,如何配置密码加密?是否支持多种加密方案?

热门文章

  1. SQL 被当成代码?谷歌的理由绝了!
  2. 放弃百万年薪,独自创业,我做错了吗?
  3. 为什么不能完全相信自动驾驶?
  4. 管理大型共享数据库,做到这几点不再头疼!
  5. OpenStack基金会 ( OSF)演进为开源基础设施基金会
  6. 谷歌不是 Web 界的上帝!
  7. Python 大数据分析疫情:如何实现实时数据爬取及 Matplotlib 可视化?
  8. 支付宝集五福下周一开始;iPhone 面世 13 周年;Laravel 6.10.0 发布 | 极客头条
  9. 从词袋到 Transfomer,NLP 十年突破史
  10. 最后2天,BDTC 2019早鸟票即将售罄,超强阵容及议题抢先曝光!