Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么当我访问链接列表时mathematica内核会崩溃?

为什么当我访问链接列表时mathematica内核会崩溃?
EN

Stack Overflow用户
提问于 2012-12-07 22:52:00
回答 1查看 742关注 0票数 3

我使用mathematica 7,我试图使用一个单链接列表(~50,000个元素)来避免在动态列表中使用AppendTo来提高速度。在这个测试中,我可以创建一个包含10个元素的列表,如下所示

代码语言:javascript
运行
AI代码解释
复制
list1 = Fold[{#1, #2} &, {}, RandomInteger[10^5, 10]]

我试着像这样用Part访问它(访问一个随机元素100次)

代码语言:javascript
运行
AI代码解释
复制
Timing[list1[[Sequence @@ ConstantArray[1, #], 2]] & /@RandomInteger[{1,10}, 100]]

对于小型列表(如上面所示的10),这很好。由于我不明白的原因,当列表中有更多的元素(如10^4)时,这会扼杀内核。我试过在这个网站上四处看看&其他地方,但我只是不知道我应该如何使用链接列表。我甚至尝试过使用不同的实现,如f[e1,f[e2,f[e3,...f[]...]]],但在使用此方案时,我不知道如何访问和操作元素。我想问题必须做w/ $RecursionLimit,但我不知道如何绕过它。

特别是我希望能用

代码语言:javascript
运行
AI代码解释
复制
list1[[Sequence @@ ConstantArray[1, index], 2]] = new value

在我的密码里。同样,当列表很小时,这也是可行的,但是对于更大的列表,内核最终会崩溃。奇怪的是,内核并不总是崩溃,而只是随机地处理大型列表。这听起来类似于here on SE描述的内容,但我不知道这种讨论是否相关。真的,我只是在修改LL元素方面需要帮助&在mathematica中正确地使用LL。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-08 04:14:30

我可以确认崩溃,但只有使用更深层次的Part规范:

代码语言:javascript
运行
AI代码解释
复制
n = 5000000;

list1 = Fold[List, {}, RandomInteger[10^5, n]];

Do[
 list1[[Sequence @@ ConstantArray[1, i], 2]] = "token"; Print[i],
 {i, 100000, 200000, 10000}
]

100000 110000 120000 130000 140000 150000 160000 170000

因此,在我的系统中,坠机的深度超过17万。它也发生了,至少在这个深度,只有在分配一个部分时,而不仅仅是提取一个:

代码语言:javascript
运行
AI代码解释
复制
Timing[
 list1[[##, 2]] & @@ ConstantArray[1, #] & /@ RandomInteger[{1, n - 1}, 10]
]

{1.03,{77041,74008,29990,13286,12762,48702,76027,25009,31267,1887}

推荐

作为另一种选择,我建议使用 functions

代码语言:javascript
运行
AI代码解释
复制
n = 5000000;

list2 = Internal`Bag @ RandomInteger[10^5, n];  (* fill our Bag *)

Internal`StuffBag[list2, 27182];  (* add an element to the Bag *)

Internal`BagLength @ list2  (* check the length of our Bag *)

5000001

代码语言:javascript
运行
AI代码解释
复制
pos = RandomInteger[{1, n}, 10];  (* pick ten random positions *)

(* assign to those positions values 1 through 10 *)
MapIndexed[
  (Internal`BagPart[list2, #] = #2[[1]]) &,
  pos
];

Internal`BagPart[list2, pos]  (* check the contents of those positions *)

{1、2、3、4、5、6、7、8、9、10}

代码语言:javascript
运行
AI代码解释
复制
(* convert our Bag into a standard list *)
flat = Internal`BagPart[list2, All];

flat[[pos]]  (* check the contents again *)

{1、2、3、4、5、6、7、8、9、10}

代码语言:javascript
运行
AI代码解释
复制
Last @ flat  (* check that the element we appended is still there *)

27182

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13775274

复制
相关文章
关于在angular2中引入第三方插件或者框架(jquery)
由于本人也是初入angular2不久,很多问题也许解决了,确不知其原由,也有一些问题,解决了后面又出来同样的错误,关于这些,请谅解. 关于这个问题,我自己也是想了很久,总算是能用上了, 想在angular2中引用jquery的话,高大上的一个方法是,在package.json中的dependencies中写入,执行cnpm i;安装; "dependencies": { "@angular/common": "^4.0.0", "@angular/compiler": "^4.0.0",
杭州前端工程师
2018/06/15
2.3K0
Sqoop在导入的时候导入多张表
当我们用Sqoop导入一张表的时候可以用 --table <table-name> 去指定要导入一个表,但是我们要导入多个表的话,用这个--table是不行的。 这时候我们可以用Sqoop的import-all-tables加--exclude-tables 进行组合使用,实现我们一次导入多个表的目的。
ZHANGHAO
2018/12/09
6.7K1
Sqoop在导入的时候导入多张表
spring导入第三方资源
配置数据库连接参数时,注入驱动类名是用driverClassName还是driver?
楠羽
2023/10/17
1620
spring导入第三方资源
在高PR值的网站中怎么获得导入连接
这几天忙着在给公司的年会做策划,真累呀,每年的沈阳·K友汇都是公司一个大项目,所以投入的精力还是比较大的,前几天谈论了一个站长要做到是持之以恒,坚持不懈得到了需要朋友的认可,很高兴,今天谈谈关于在高PR的网站上获得导入连接的几个方法;
李洋博客
2021/06/15
2.1K0
在高PR值的网站中怎么获得导入连接
在 Spark 数据导入中的一些实践细节
图谱业务随着时间的推移愈发的复杂化,逐渐体现出了性能上的瓶颈:单机不足以支持更大的图谱。然而,从性能上来看,Neo4j 的原生图存储有着不可替代的性能优势,这一点是之前调研的 JanusGraph、Dgraph 等都难以逾越的鸿沟。即使 JanusGraph 在 OLAP 上面非常出色,对 OLTP 也有一定的支持,但是 GraphFrame 等也足以支撑其 OLAP 需求,更何况在 Spark 3.0 会提供 Cypher 支持的情况下,图谱的 OLAP 需求相比 OLTP 有更多途径可以解决。这个时候,Nebula Graph 的“横空出世”无疑是对分布式 OLTP 效率低下现状的一种突破。
NebulaGraph
2020/11/25
1.6K0
在 Spark 数据导入中的一些实践细节
spring在ssh框架中的作用学习
spring在ssh框架中的作用学习 在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语 句。Struts是用来做应用层的,他它负责调用业务逻辑serivce层。所以SSH框架的流程大致是:Jsp页面—-Struts——Service(业务逻辑处理类)—Hibernate(左到右) struts负责控制Service(业务逻辑处理类),从而控制了Service的生命
用户1289394
2018/02/26
1.2K0
Java中的动态代理以及在框架中的应用
我们先假设现在有怎么一个需求,要求你在不改动原有代码的情况下在所有类的方法前后打印日志。我们很容易想到静态代理,具体做法如下:
烂猪皮
2021/06/09
1.3K0
Java中的动态代理以及在框架中的应用
Python怎么导入第三方依赖的Module
初步猜测是没有引入对应的module,因为没写过python代码,所以需要网上找找资料,网上资料说可以用pip install就可以,不过我python环境刚安装,这个命令在哪运行?通过搜索知道需要配置环境变量,这个和java也一样,都是要配环境变量,才能在cmd窗口使用sdk的命令
SmileNicky
2022/05/07
2140
Python怎么导入第三方依赖的Module
ABAQUS-Python第三方库的导入
Python语言上手容易,开源,大量的第三方库可供调用,因此近年来发展迅猛,常年盘踞各类机构推出的程序语言排行榜的前几位。ABAQUS/CAE的前处理基本是依赖于Python语言打造,因此采用Python进行二次开发很方便。
阿信老师CAE
2022/05/17
2K0
ABAQUS-Python第三方库的导入
Sqoop的安装与Mysql的数据导入到hdfs框架中
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
用户2603479
2018/09/19
1.1K0
android studio 导入第三方库的记录
http://blog.csdn.net/lxk_1993/article/details/50493582
103style
2022/12/19
3220
android studio 导入第三方库的记录
神经网络(TensorFlow)游乐场
TensorFlow游乐场是一个通过网页浏览器就可以训练的简单神经网络并实现了可视化训练过程的工具。可以去简单地模拟深度学习的过程。连线越粗表明权重越大。
里克贝斯
2021/05/21
1.5K0
神经网络(TensorFlow)游乐场
在vscode中安装python第三方库
以安装numpy为例,输入pip install numpy,点击回车,安装成功之后会显示如下信息:
全栈程序员站长
2022/11/10
2.3K0
在vscode中安装python第三方库
在Fabric ChainCode中导入第三方包(以状态机为例)
在企业级应用开发中,经常会涉及到流程和状态,而有限状态机(FSM)则是对应的一种简单实现,如果复杂化,就上升到Workflow和BPM了。我们在Fabric ChainCode的开发过程中,也很可能涉及到状态机,这里我们就举一个例子,用FSM实现一个二级审批的状态转移。
深蓝studyzy
2022/06/16
2700
在Fabric ChainCode中导入第三方包(以状态机为例)
Android Studio导入第三方类库的方法
Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯定比Eclipse好用吧,反正以前没有java开发经验,索性就从android studio开始学,以前一直是做.net的开发,最近使用了Eclipse,Android Studio之后发现Visual studio.net正式太好用了,不得不说微软的开发工具做的比谁都好。下面是我在使用Android Studio应
阿新
2018/04/12
1.7K0
Android Studio导入第三方类库的方法
在python中实现基于ICE框架的cl
ICE (Internet Communication Engine) 是zeroc公司实现的通信中间件
py3study
2020/01/03
2.2K0
WebAssembly 在 MOSN 中的实践:基础框架篇
本文将介绍 WebAssembly 技术在 MOSN 中的实践,首先介绍了当前 MOSN 在扩展隔离方面所面临的痛点,并对 Wasm 技术的相关背景知识进行介绍。随后描述了 Wasm 扩展框架的整体架构,并介绍了我们在 Proxy-Wasm 社区规范中所做的贡献,最后描述了框架在性能、异常调试等方面的实践内容。 作为金融级服务网格中的流量代理组件,MOSN 在承载蚂蚁数十万服务容器之间流量的同时,也承载着诸多例如限流、鉴权、路由等中间件基础能力。这些能力以不同的扩展形式与 MOSN 运行于同一进程内。非隔离
深度学习与Python
2023/04/01
8220
WebAssembly 在 MOSN 中的实践:基础框架篇
时间轮原理及其在框架中的应用
1)心跳检测。在Dubbo中,需要有心跳机制来维持Consumer与Provider的长连接,默认的心跳间隔是60s。当Provider在3次心跳时间内没有收到心跳响应,会关闭连接通道。当Consumer在3次心跳时间内没有收到心跳响应,会进行重连。Provider侧和Consumer侧的心跳检测机制都是通过定时任务实现的,而且是本篇文章要分析的时间轮HashedWheelTimer处理的。
2020labs小助手
2022/03/28
2.4K0
WebAssembly 在 MOSN 中的实践 - 基础框架篇
作为金融级服务网格中的流量代理组件,MOSN 在承载蚂蚁数十万服务容器之间流量的同时,也承载着诸多例如限流、鉴权、路由等中间件基础能力。这些能力以不同的扩展形式与 MOSN 运行于同一进程内。非隔离的运行方式在保障性能的同时,却也给 MOSN 带来了不可预知的安全风险。
CNCF
2021/04/21
9770
点击加载更多

相似问题

Xcode游乐场框架导入

11

在游乐场中导入框架出错

52

如何将第三方框架导入Xcode游乐场?

49

将分析框架导入游乐场

10

如何在swift游乐场使用随迦太基导入的框架

45
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档