了解内核-前端通信——为什么我的前端冻结?

2024-03-11

EDIT:只需确认您是否可以重现此内容就会很有用。只需一台计算机即可尝试此操作(无需远程连接)。

Update似乎其他人无法在 Mac 或 Win7 上重现此问题,因此它要么是 WinXP 特定的,要么是我的机器特定的。此时我要放弃了。


最好有一个关于前端和内核如何通信的教程,这样我们就可以调试远程内核问题。任何此类一般性答案(或其他地方教程的链接)都是非常受欢迎的。我已经知道了远程内核策略 http://library.wolfram.com/infocenter/Conferences/7250/作者:萨沙·克拉基。

现在是实际问题:当我以任何方式连接到远程计算机时(例如使用远程内核策略),前端迟早会冻结。我怎样才能防止这种情况发生?

以下是在单台计算机上重现问题的方法(无需远程连接):

  1. 创建新的内核配置(评估菜单 -> 内核配置选项...)

    选择高级选项。

    MLOpen 的参数:

    -LinkName "8000@YOUR-IP-HERE,8001@YOUR-IP-HERE" -LinkMode Listen 
    -LinkProtocol TCPIP -LinkHost "YOUR-IP-HERE" -LinkOptions MLDontInteract
    

    (代替YOUR-IP-HERE与您计算机的 IP 地址。在 Windows 上,您可以通过输入以下命令来获取此信息ipconfig在命令窗口中。)

    启动内核的 Shell 命令:留空(我们将手动执行)

  2. 打开一个新笔记本,将笔记本的内核设置为您刚刚设置的内核,然后评估一些内容(1+1).

  3. 现在我们需要在连接超时之前手动启动内核。所以启动一个新内核(math)在命令行模式下,并评估以下内容:

    link=LinkConnect["8000,8001",LinkProtocol->"TCPIP"] (* connect to front end link *)
    
    $ParentLink = link; (* set the front end link as parent link *)
    

    现在连接已建立,一切似乎都正常工作(除了前端粉红色消息窗口中的一条消息)

  4. 评价Manipulate[n, {n, 0, 100, 1}]。首先,这似乎也有效。现在使用滑块。前端迟早会冻结并需要被杀死。对我来说,上下拖动滑块大约 10 秒而不释放它总是足够的。

为什么前端会冻结?如何在前端和内核之间创建 TCPIP 模式连接,以使一切正常工作?


一些注意事项:

  • 我用的是Windows XP。
  • 如果我使用,问题永远不会出现LinkProtocol -> "SharedMemory".
  • 使用评估 -> 中止评估中止计算确实可以正常工作。
  • 我已经验证使用Links[] that MathLink`$PreemptiveLink and MathLink`$ServiceLink被创建并且LinkConnectedQ[]回报True在他们。

再次注意,只有在拖动Manipualate连续按住滑块几秒钟而不松开。

链接到 MathGroup 上的同一问题。 https://groups.google.com/d/msg/comp.soft-sys.math.mathematica/TWmbmovDskc/0KPXGj7Ml6UJ

Related: Firewall settings for remote kernel to work (Mathematica) https://stackoverflow.com/questions/6226196/firewall-settings-for-remote-kernel-to-work-mathematica


(不是答案,但很难将其写为评论)

仅供参考,这里有一些关于前端如何与内核对话的信息http://reference.wolfram.com/mathematica/tutorial/AdvancedDynamicFunctionality.html http://reference.wolfram.com/mathematica/tutorial/AdvancedDynamicFunctionality.html

大约一半的地方,它说

The front end and kernel communicate with each other through several 
MathLink connections, known as the main link, the preemptive link, 
and the service link. The main and preemptive links are pathways by 
which the front end can send evaluation requests to the kernel, and 
the kernel can respond with results. The service link works in reverse, 
with the kernel sending requests to the front end.

还有更多。也许会有帮助。此外,第 31 页的 PDF 文件中也包含相同的信息:

http://www.wolfram.com/learningcenter/tutorialcollection/DynamicInteractivity/ http://www.wolfram.com/learningcenter/tutorialcollection/DynamicInteractivity/

内核和前端之间的实际消息传递协议必须非常先进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解内核-前端通信——为什么我的前端冻结? 的相关文章

随机推荐

  • Thymeleaf 不解释 sec 标签

    我遇到了一个问题 thymleaf 无法识别我的 Spring Boot 项目中的 sec 标签 例如下面的 sec authentication 未被解释 并按浏览器中的 html 中的形式显示 div Roles span span d
  • 从 Elasticsearch 文档中删除字段

    我需要删除索引到 Elasticsearch 的所有文档中的一个字段 我该怎么做 backtrack 所说的是 true 但是在 Elasticsearch 中有一种非常方便的方法可以做到这一点 Elasticsearch 会抽象出删除的内
  • SQLite .NET,ExecuteScalarAsync,如何知道何时没有结果?

    SQL 语句正在检索行的 ID 但可能不存在这样的行 当我在 GUI 工具中执行特定 SQL 语句时 它返回 0 行在 0 毫秒内返回 但是 当我执行相同的 SQL 语句时ExecuteScalarAsync
  • Spark Scala UDP 在侦听端口上接收

    中提到的例子http spark apache org docs latest streaming programming guide html http spark apache org docs latest streaming pro
  • curl 重新使用 https 连接会话

    我已经使用 openssl 构建了curl 并且能够执行https 连接 现在 每次当curl建立TLS连接时 它都会再次握手 我需要利用客户端与服务器的先前连接会话ID 并在下一个请求中使用它 我已经尝试过以下选项 但每次尝试仍然会进行新
  • 当您有列名的字符向量时,如何不使用 select() dplyr 选择列?

    我正在尝试使用 dplyr 取消选择数据集中的列 但自昨晚以来我无法实现这一目标 我很清楚解决方法 但我正在严格尝试通过 dplyr 找到答案 library dplyr df lt tibble x c 1 2 3 4 y c a b c
  • Angular 2 HTTP 响应拦截器

    在 Angular 1 中 全局处理 HTTP 响应状态是通过 httpProvider angular module app service httpResponseInterceptor q function q this respon
  • Node.js 开发人员的高级文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近我们的团队正在使用 Node js 开发一个新项目 开始使用 Node js 并不难 但现在我们才
  • 检查范围内唯一单元格的数量

    我有一张 Excel 表格 在 E 列下 我有 425 个包含数据的单元格 我想检查相同的数据 即单元格内的文本 是否在 E 列下剩余 424 个单元格中的任何其他位置重复 我该如何执行此操作 例如 在 E54 中我有 Hello Jack
  • UITextField 文本上的阴影

    是否可以在文本中添加阴影UITextField 从 3 2 开始 您可以使用 CALayer 阴影属性 textField layer shadowOpacity 1 0 textField layer shadowRadius 0 0 t
  • 错误:错误 1005:无法创建表“cat10e.recording”(错误号:150)[重复]

    这个问题在这里已经有答案了 我正在尝试对我的数据库进行正向工程 该数据库有 7 个表 但其中一个向我发送了错误 我真的不知道从这里做什么 因为它的设置就像我的其他表一样 所以我不确定是什么导致了错误 谷歌返回了许多不同的答案 专辑SQL p
  • 代码不适用于 matlab 中的图像处理

    我想在matlab中计算这个公式 m n d size img1 matrix1 sum abs img1 img2 a matrix1 m n b a 100 其中img1 img2是尺寸为512 512 3的两张图像 目标是获得单个数值
  • Linux 中断与轮询

    我正在开发一个带有 DSP 和 ARM 的系统 ARM上有一个linux操作系统 我有一个 DSP 向 ARM Linux 发送数据 在 Linux 中 有一个内核模块读取从 DSP 接收到的数据 内核模块被唤醒以读取数据 使用 DSP 和
  • Hadoop 减少多种输入格式

    我在 HDFS 中有两个数据格式不同的文件 如果我需要减少两个数据文件 那么作业设置会是什么样子 例如想象一下常见的字数统计问题 在一个文件中使用空格作为世界分隔符 在另一个文件中使用下划线 在我的方法中 我需要针对各种文件格式使用不同的映
  • 谷歌地图用多边形模拟折线

    几年前 我编写了一些代码 突出显示了 Google 地图上的一条路径 其中用户输入了宽度 用户确定突出显示的路径有多宽 以米为单位 这样他们就可以看到他们所覆盖的地面 例如草坪施肥等 我计算了距一个点的距离 并使用 Google 地图com
  • “你的意思?” Lucene.net 中的功能

    有人可以告诉我如何在 Lucene net 中实现 您是说 功能吗 Thanks 你应该调查一下拼写检查器 https svn apache org repos asf lucene lucene net trunk C 23 contri
  • PHP - 电子邮件验证[重复]

    这个问题在这里已经有答案了 可能的重复 电子邮件地址验证 https stackoverflow com questions 1025466 email address validation 你好 我有这个功能来验证电子邮件地址 funct
  • 仅当我省略 usePublicVapidKey 方法时,Firebase Cloud Messaging 的 getToken() 才有效,为什么?

    我在实施 Firebase for Firebase Cloud Messaging FCM 时遇到具体问题 正如您在下面的代码中看到的 messaging usePublicVapidKey
  • Android:无法转换为 java.lang.CharSequence

    我不知道我哪里出了问题 我试图在 recyclerView 中列出食谱的成分 但我无法让 onBindViewHolder 正常工作 无论我尝试过什么 下面是适配器代码以及 xml Recipe class 本质上我需要将 Recipe 类
  • 了解内核-前端通信——为什么我的前端冻结?

    EDIT 只需确认您是否可以重现此内容就会很有用 只需一台计算机即可尝试此操作 无需远程连接 Update似乎其他人无法在 Mac 或 Win7 上重现此问题 因此它要么是 WinXP 特定的 要么是我的机器特定的 此时我要放弃了 最好有一