问题标签 [stackless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
637 浏览

continuations - 为什么 PyPy 1.7 不实现“无堆栈”堆栈?

PyPy 1.7 的默认构建包含无堆栈,不提供在没有递归深度限制的情况下运行的能力(以直接方式)。

为什么?

Previus 构建的 PyPy 具有无堆栈支持函数调用和尾递归的延续风格。

我不是在问涉及协程的解决方案,而是在寻找集成 stackelss 的问题。

0 投票
3 回答
284 浏览

python - 是否可以将无堆栈 python 2.7.2 与 pythondotnet 一起使用?

平台:Windows 7 假设两者都是 32 位版本。

我目前的理解是这是不可能的,因为两个安装过程都涉及替换 python.exe 本身。

我想每个来源都必须合并才能从两者中获得功能?

无堆栈 Python:http: //zope.stackless.com/

用于 .NET 的 Python:http: //pythonnet.github.io/

我们在 IronPython 上使用 Python for .NET,因为我们想要访问所有的 cpython 库(例如 matplotlib 等)。

0 投票
1 回答
200 浏览

python - 是否可以在不进行 RPC 的情况下使用 Spickle 序列化 tasklet 代码(而不仅仅是 exec 状态)?

尝试使用带有 Spickle 的 stackless python (2.7.2) 通过 celery 发送测试方法,以便在不同的机器上执行。我希望测试方法(代码)包含在 pickle 中,而不是强制存在于执行机器 python 路径上。

一直在参考以下演示文稿: https ://ep2012.europython.eu/conference/talks/advanced-pickling-with-stackless-python-and-spickle

尝试使用检查点幻灯片 11 中显示的技术。鉴于我们使用的是 celery,RPC 示例似乎不正确:

客户端代码:

服务器代码:

结果是:

关于我做错了什么或者这是否可能的任何建议?

在 celeryd 中进行动态模块加载的替代建议也很好(作为使用 sPickle 的替代方法)。我已经尝试过这样做:

但是动态加载的模块似乎并没有通过对 celeryd 的不同调用(即不同的远程调用)持续存在。

0 投票
1 回答
215 浏览

recursion - 如何消除这种递归?

这比简单的左递归或尾调用递归要复杂一些。所以我想知道如何消除这种递归。正如您在下面看到的,我已经保留了自己的堆栈,因此该函数不需要参数或返回值。但是,它仍在将自身向上(或向下)调用到某个级别,我想将其变成一个循环,但现在已经为此挠头了一段时间。

这是简化的测试用例,用 printf("dostuff at level #n") 消息替换所有“真实逻辑”。这是在 Go 中,但该问题适用于大多数语言。使用循环和 goto 是完全可以接受的(但我玩过这个,它变得令人费解、失控并且一开始似乎不可行);但是,应避免使用额外的辅助函数。我想我应该把它变成某种简单的状态机,但是......哪个?;)

至于实用性,这是以每秒大约 2000 万次的速度运行(稍后堆栈深度的范围可以从 1 到 25 最大)。在这种情况下,维护我自己的堆栈必然比函数调用堆栈更稳定/更快。(此函数中没有其他函数调用,只有计算。)此外,没有垃圾生成 = 没有垃圾收集。

所以这里是:

}

更新——经过这里的一些讨论,并进一步思考:

我刚刚编写了以下伪代码,理论上应该可以满足我的需要:

当然,棘手的部分是为我的自定义用例填写 nextsibling() 。但就像在保持我需要的深度优先遍历顺序的同时消除内部递归的一般解决方案一样,这个粗略的轮廓应该以某种形式这样做。

0 投票
1 回答
382 浏览

performance - 将 C/C++/Pascal/等。如果它是一种无堆栈语言,会大大慢吗?

还有一个相关的问题:堆栈跟踪/类似的调试功能会是什么样子?

如果这是一个愚蠢的问题,请原谅我,但我对低级编程知之甚少。我知道大多数 CPU 都有与堆栈相关的指令,但是经过适当优化的无堆栈语言真的会慢得多吗?

0 投票
7 回答
3320 浏览

c++ - 是否有 C++ 的无堆栈或无堆实现?

C++ 标准没有提到堆栈或堆的任何内容,它们是特定于实现的,这是真的。

尽管它们不是 C++ 标准的一部分,但我们最终还是会使用它们,以至于它们就像是语言本身的一部分,并且必须考虑到内存或性能目的。

因此我的问题是有不使用堆栈和堆的 C++ 实现吗?

0 投票
3 回答
861 浏览

java - 在java中模拟线程调度(stackless java?)

对于一些学术研究,我需要模拟在单个处理器上运行的多个线程。

我希望能够在我的代码中插入 *call_scheduler()* 调用,其中当前的“线程”将暂停(记住它在哪个代码行中)并且一些调度函数将决定放开哪个线程。

在 python 中,这可以使用无堆栈 python 巧妙地实现。有java替代品吗?

我可以使用真正的线程和一些消息队列(或管道)来实现它,这将强制一次只运行一个线程 - 但这是一个丑陋且有问题的解决方案。

0 投票
2 回答
2142 浏览

python - windows 8 不兼容?

我无法让我的代码在我的 win8 笔记本电脑上运行。我正在使用以下组合:

  • 无堆栈 Python 2.7.2
  • Qt 4.8.4
  • PySide 1.1.2
  • Eclipse/Pydev 和 WingIDE

这在我的 Win7 PC 上运行良好,但现在我买了一台装有 Windows 8 的演示笔记本电脑。据我所知,所有的安装方式都与我的 PC 上的相同。

当我现在运行我的程序(相同的代码)时,我收到一个警告:

“Qt:检测到未经测试的 Windows 6.2 版!”

好的,这可能是我的问题的根源,但我也得到了错误:

  • 有时程序会在上面的警告之后退出(我认为只有 eclipse)
  • 有时我会得到一个 APPCRASH(我认为只有 eclipse)
  • 有时我得到异常:TypeError:调用元类基础时出错:mro()返回的基础布局不合适('')
  • 有时我得到异常:TypeError:调用元类基础时出错:多个基础有实例布局冲突

特别是最后两个似乎不是Windows问题,但我看不出与我的PC win7安装有任何其他区别。有谁知道发生了什么或如何解决这个问题?我是否错过了安装步骤,或者可能是一些不兼容?

干杯,拉斯

有人对此有意见吗?

0 投票
1 回答
586 浏览

stack-overflow - 协程堆栈是否在 Lua、Python、Ruby 或任何其他语言中增长?

有一些语言支持确定性轻量级并发——协程。

  1. Lua - 协程
  2. 无堆栈 Python - tasklet
  3. 红宝石 - 纤维
  4. 应该更多......但目前我没有太多想法。

无论如何,据我所知,它需要许多分离的堆栈,所以我想知道这些语言如何处理堆栈增长。这是因为我读到一些关于 4KB 的 Ruby Fiber的提及——显然开销很大——并且他们将其宣传为防止堆栈溢出的功能。但我不明白为什么他们只是说堆栈会自动增长。虚拟机(不限于 C 堆栈)无法处理堆栈增长是没有意义的,但我无法确认这一点,因为我不太了解内部结构。

他们如何处理这类微线程上的堆栈增长?是否有任何显式/隐式限制?或者只是会被清楚地自动处理?

0 投票
2 回答
277 浏览

python - 使用 Stackless Python 保存大型运行程序的状态?

给定一个大型(4.5 GB 代码库)python 测试框架,其执行涉及数十个文件,其中许多文件不能直接腌制,是否可以将程序的初始执行包装在一行函数中,创建一个 Stackless tasklet那个函数,并且在执行过程中,pickle tasklet 作为保存整个程序状态的一种方式?Stackless 的 tasklet 酸洗能力有什么限制?