python deepcopy函数实现_python 多线程

python deepcopy函数实现_python 多线程我有一个非常简单的python例程,它涉及循环遍历大约20000个纬度、经度坐标的列表,并计算每个点到参考点的距离。defcompute_nearest_points(lat,lon,nPoints=5):”””FindthenearestNpoints,giventheinputcoordinates.”””points=session.query(PointInd…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我有一个非常简单的python例程,它涉及循环遍历大约20000个纬度、经度坐标的列表,并计算每个点到参考点的距离。def compute_nearest_points( lat, lon, nPoints=5 ):

“””Find the nearest N points, given the input coordinates.”””

points = session.query(PointIndex).all()

oldNearest = []

newNearest = []

for n in xrange(nPoints):

oldNearest.append(PointDistance(None,None,None,99999.0,99999.0))

newNearest.append(obj2)

#This is almost certainly an inappropriate use of deepcopy

# but how SHOULD I be doing this?!?!

for point in points:

distance = compute_spherical_law_of_cosines( lat, lon, point.avg_lat, point.avg_lon )

k = 0

for p in oldNearest:

if distance < p.distance:

newNearest[k] = PointDistance(

point.point, point.kana, point.english, point.avg_lat, point.avg_lon, distance=distance

)

break

else:

newNearest[k] = deepcopy(oldNearest[k])

k += 1

for j in range(k,nPoints-1):

newNearest[j+1] = deepcopy(oldNearest[j])

oldNearest = deepcopy(newNearest)

#We’re done, now print the result

for point in oldNearest:

print point.station, point.english, point.distance

return

我最初是用C语言编写的,使用完全相同的方法,在那里工作得很好,对于nPoints&lt;=100基本上是即时的。所以我决定将它移植到python,因为我想使用SqlAlchemy来做一些其他的事情。

我第一次移植它时没有使用deepcopy语句,而现在这些语句使方法变得复杂,这导致结果“奇怪”,或者部分不正确,因为有些点只是作为引用被复制(我猜?我想?)–但它的速度仍然几乎和C版一样快。

现在,随着deepcopy调用的增加,这个例程正确地完成了它的工作,但是它已经产生了一个极端的性能损失,现在需要几秒钟来完成相同的工作。

这似乎是一项很普通的工作,但我显然不是像Python一样。我应该怎么做才能得到正确的结果,但不必在任何地方都包含deepcopy?

编辑:

我找到了一个简单快捷的解决方案def compute_nearest_points2( lat, lon, nPoints=5 ):

“””Find the nearest N points, given the input coordinates.”””

points = session.query(PointIndex).all()

nearest = []

for point in points:

distance = compute_spherical_law_of_cosines( lat, lon, point.avg_lat, point.avg_lon )

nearest.append(

PointDistance(

point.point, point.kana, point.english, point.avg_lat, point.avg_lon, distance=distance

)

)

nearest_points = sorted(nearest, key=lambda point: point.distance)[:nPoints]

for item in nearest_points:

print item.point, item.english, item.distance

return

所以基本上我只是复制输入并附加一个新的值-到参考点的距离。然后我只对结果列表应用“sorted”,指定sort键应该是PointDistance对象的distance属性。

这比使用deepcopy快得多,尽管我承认我不太明白为什么。我想这要归功于python的高效C实现“排序”?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188624.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 智慧物业小程序_智慧小区物业管理小程序搭建开发有现成案例

    智慧物业小程序_智慧小区物业管理小程序搭建开发有现成案例智慧小区物业管理小程序搭建开发有现成案例【欢迎手机致电:沈经理153.1556.5651微信同步】你我您社区团购模式平台开发,你我您社区商城购物便捷取货模式开发,你我您社区app小程序系统开发,支持二次开发维信小程序的出现,为传统企业发展提供了新的平台。通过维信小程序,传统企业可以实现推广、营销等一系列功能,让企业获得新的动力和机遇。一、你我您社区小程序是什么?1.限时商品抢购,团购价下单2.到…

    2022年10月18日
    1
  • 基于python的情感分析案例_关于python爬虫的情感分析

    基于python的情感分析案例_关于python爬虫的情感分析今天给大家分享的是通过情感词典来对文本进行情感分析最后计算出情感得分通过情感得分来判断正负调性主要步骤:数据准备本次情感词典采用的是BosonNLP的情感词典,来源于社交媒体文本,所以词典适用于处理社交媒体的情感分析本次分析准备的文本数据有:BosonNLP情感词典停用词表否定词表程度副词表生成停用…

    2022年8月23日
    3
  • eclipse 卸载 codemix

    eclipse卸载codemix忘了是什么时候eclipse安装了这个视图插件,也许它的确有些不错的功能,但是收费我是不能接受的。卸载时遇到了点麻烦,刚开始点击help的EclipseMarketplace,在Installed中选择codemix的uninstall,操作完成后重启发现插件依然存在,再次重复操作发现下面原来有英文提示,大致意思是有其他应用用到了codemix,无法删除…

    2022年4月7日
    168
  • 基于tensorflow的LSTM 时间序列预测模型

    时间序列预测(曲线回归或曲线拟合),结构为训练数据生成-》隐藏输入层-》LSTM神经层-》隐藏输入层-》结果,也可以采用LSTM神经层-》全连接层(多层的普通神经网络)构成,训练效果未对比,与参数调优相关。参数说明:TIME_STEPS:RNN训练的步数,一次训练输入的序列长度;INPUT_SIZE:输入序列中,单个输入的维度,用于曲线拟合或者回归的话,维度即为1;BATCH_SIZE:训练的批…

    2022年4月9日
    41
  • 数据结构面试经典问题汇总及答案_数据结构基础面试题

    数据结构面试经典问题汇总及答案_数据结构基础面试题数据结构面试经典问题汇总参考资源:基础深入补充:参考资源:基础数据结构常见面试题深入数据结构面试题(三)数据结构面试必问数据结构算法常见面试考题补充:1.数组和链表的区别,请详细解释。从逻辑结构来看:a)数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。b)链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除

    2022年9月19日
    1
  • Java开发手册之模块命名「建议收藏」

    Java开发手册之模块命名「建议收藏」Java开发手册之模块命名

    2022年4月23日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号