问题标签 [python-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 投票
2 回答
1710 浏览

python - Python 处理大量线程?

这将创建大约 100000 个线程,但我最多可以创建 32 个线程吗?这段代码可以做哪些修改?

0 投票
3 回答
623 浏览

python - Python 是否可以重新创建整个调用堆栈?

我有兴趣尝试使用 python。frame.f_locals我知道我可以使用and检查并注入局部和全局变量到一个框架中frame.f_globals,但我现在渴望创建一个完整的调用堆栈。

使我无法更改堆栈信息的原因是 python 不允许我更改它。

我实际上已经考虑过以编程方式转换我正在使用的 python 模块,以模拟缠绕堆栈。但我知道这是一个糟糕的解决方案,因为客户端代码使用if, while,with并且try很容易破坏我的代码。

我也看过 manipulating frame.f_back,但无济于事。它是只读的。

我正在尝试做的事情

作为一项实验,我正在尝试fork()通过网络实现。

我知道无堆栈 python 可能有我想要的,但仍然无法更改frame.f_back属性。

0 投票
2 回答
277 浏览

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

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

0 投票
1 回答
327 浏览

python-3.x - 实现无堆栈 Python

我真的很佩服 Stackless Python 的功能,我一直在寻找一种方法来模拟它的语法,同时仍然使用标准的 Python 3 解释器。Alex J. Champandard 在 gamedev 博客中的一篇文章使 greenlet 库看起来可以提供此功能。我稍微修改了他的代码,但我能想到的最好的临时 tasklet 包装器是一个在变量中包含一个 greenlet 的类,如下所示:

switch()然后,该函数通过在调用其方法时将变量传递给 greenlet 来模拟 Stackless 的调度。

到目前为止,这似乎可行,但我希望能够以原始的 Stackless 语法调用 tasklet,例如tasklet(function)(*args),与当前的语法相反tasklet(function,*args)。我不确定在哪里查看文档以了解如何完成此操作。这是否可能,或者它是 Stackless 对解释器的更改的一部分?

0 投票
5 回答
1416 浏览

python - 如何将参数作为附加参数传递给 python greenlet

我正在寻找一种通过另一个函数传递函数参数的方法,其方式与 Stackless 的tasklet实例化相同:

到目前为止,我想出的最好方法是:

这有效,但与 Stackless 的语法不同。我不确定在哪里查看文档以了解如何完成此操作(因此这个问题的标题相当模糊)。这是否可能,或者它是 Stackless 对解释器的更改的一部分?

编辑:我现在知道有一种方法适用于函数,但我不确定它是否适用于我的情况。我正在使用greenlet库:greenlet线程在编辑greenlet时获取args switch(),而不是在实例化时。如下所示调用它们会导致

TypeError: 'greenlet.greenlet' object is not callable.

使用greenlet.greenlet(function(args))(仍然不是正确的语法)会立即执行,并且仍然需要switch()方法中的 args。因此,我目前使用上面显示的语法将变量存储在类中,以便在调用switch(). 希望这不会改变太多的问题!

根据要求,这是有问题的代码。首先,eri 的答案的一个变体(免责声明:我以前从未使用过装饰器):

原始代码(工作但在语法上不理想):

0 投票
2 回答
637 浏览

python-2.7 - Install Stackless without uninstalling Python

It seems like on Windows I have to uninstall Python before installing stackless (http://stackless.com/wiki/Download). I have Python 2.7 installed, a solution may be installing Stackless Python 3.2, but I will have to switch between Python 2 and 3 syntax. Is there anyway to install Stackless without uninstalling Python? Otherwise I'll loose all Python modules I've installed and the CPython interpreter.

0 投票
0 回答
486 浏览

python - PyCharm 无法解决 stackless

我在 OS X 上使用 PyCharm 3。我在虚拟环境中配置了一个 Python Stackless 二进制文件以用作项目解释器。它运行正常,并且导入stackless了模块,但在编辑器中它显示有红色下划线,并且 PyCharm 说它无法解析导入。

如何修复?我应该对内置配置做些什么吗?

0 投票
2 回答
113 浏览

python - 无堆栈python构造函数

我正在使用stackless python,此代码生成以下错误:

这很奇怪,因为我没有调用stackless.tasklet.

任何人都知道错误到底是什么。

0 投票
2 回答
227 浏览

python - Python tasklet 不是打破了“没有 GOTO”的规则吗?

我对 Stackless Python 的 tasklet 进行了大量的谷歌研究。每个来源都提到它作为一个线程

stackless.com:微线程:tasklet 包装函数,允许它们作为微线程启动。

disinterest.orgv:Tasklets——轻量级线程

但是tasklet不是并发的。他们逐部分执行代码。

像这样的代码:

将打印

tasklet 执行代码,直到遇到 stackless.schedule() 然后它从开始或从上次暂停的地方执行下一个 tasklet。

每个程序员都知道“无 GOTO”的黄金法则。我的问题是:

这和 GOTO 有什么不同?
如果不并行执行,使用 tasklet 有什么好处?
如果它们不是真正的线程,为什么每个消息来源都提到它们作为线程替代品?

0 投票
0 回答
49 浏览

heroku - 如何在heroku上使用stackless python?

我正在尝试将无堆栈 python 用于 heroku 应用程序,但它们不支持运行时:

这是令人惊讶的,因为 stackless-3.3.5 最近被添加到 heroku buildpack 上可用的“非官方”版本列表中。

heroku python版本