问题标签 [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 投票
1 回答
123 浏览

python - 在运行时创建小任务

刚从 Stackless Python 开始。我正在尝试在运行时创建一些小任务,即在调用stackless.run(). 我认为这个函数不会阻塞主线程,所以我可以在必要时创建新的小任务。所以我决定制作一个在 tasklet 中运行的 tasklet-creator 函数。这就是我所拥有的:

这段代码应该每 5 秒创建一个新的 tasklet,每个都应该打印“Hello, {number of tasklet}!” 无限次(也是每 5 秒一次)。预期的输出是:

但是运行代码时没有输出。

这里有什么问题?

0 投票
0 回答
60 浏览

python - `func(*argument)` 的鲁棒性如何?

在 python 中,您可以使用星号运算符将序列扩展为离散函数参数:

甚至还有一个很好的转置矩阵(列表列表)的习惯用法,如下所示:zip(*matrix). 由于矩阵可能有很多很多行,我想知道:将很长的序列星形扩展为参数有多健壮?在许多语言中,显式参数列表 ( f(a1, a2, a3, ..., ..., ...)) 的长度限制远低于数组长度限制。

python(流行的实现)中是否有这样的限制,并且星形扩展的参数是否以防止违反这些限制的方式处理?(例如,如果它们直接填充到具有类似签名的函数的参数向量中def function(*args))。这是一个依赖于实现的问题,还是可以保证可以处理什么?我对python文档进行了一些研究,但找不到对此的讨论。

0 投票
1 回答
104 浏览

python - Sleep instead of thread.join() for platform legacy reasons

0 投票
1 回答
50 浏览

python - 没有stackless.run()的python程序

A.fun下面的程序如何在不调用程序的情况下执行我的成员stackless.run()

输出:

0 投票
0 回答
222 浏览

python - 无堆栈python和多处理减速

我有一个使用无堆栈 python 运行多个 tasklet 的程序,我的问题是虽然它很快,但如果我启动一个或多个运行相同代码的进程,我确实注意到速度变慢。

例如,在进程中使用线程,我的程序需要 6 秒才能完成,如果我启动 2 个进程,它仍然只需要 6 秒即可完成。但是,如果我使用 tasklets,程序只需要 2 秒即可完成,但如果我同时运行 2 个进程则需要 4 秒,如果我运行 3 个进程等则需要 6 秒。

我的问题是,这是无堆栈 python 的正常行为吗?我检查以确保单独进程中的小任务使用单独的调度程序,并且每个进程只能看到它们的小任务,但也许所有进程中的所有小任务仍在争夺系统资源?这是我能想到的唯一解释,为什么在使用小任务而不是线程时,每个额外的进程都会导致速度变慢。我需要有人向我解释这一点,这样我才能弄清楚我的代码是否有问题,或者这是一个不可避免的问题。

0 投票
0 回答
102 浏览

python - 工厂返回 boost 暴露的 python 对象段错误

我在通过工厂公开多态类层次结构时遇到了一个棘手的问题。我创建了一个示例来演示该问题。

这一切都托管在带有嵌入式python(stackless 2.7)解释器的可执行文件中。当我运行可执行文件并获取 Python 代码时,我可以从工厂创建一个变量 (a = MakeB()),这将返回一个指向 TestA 类的智能指针,但包含一个 TestB 实例。我遇到的问题是,当我访问基类成员变量/函数时它可以工作,但是访问 TestB 变量/函数会生成段错误 11 (osx)。

返回的实例向 python 报告它的类是 TestB (报告相同),并且打印消息显示 TestB 已构建并返回。值得注意的是,我直接创建 TestB(与工厂相对),基类的变量/函数可以正常工作。

我的实际生产代码更复杂,但这已经归结为这个测试示例。如果有人认为它会有所帮助,我可以提供段错误的回溯。

谢谢。

hpp 文件

.cpp 文件

0 投票
1 回答
1214 浏览

python - 找不到“stackless_installer_c4_win32”的索引页(可能拼写错误?)

我正在尝试安装无堆栈 python。我努力了

我已经完成了所有这些操作,并且使用下划线而不是破折号也是如此。

所有这些都吐出:

我也运行过这些

一切都是最新的

0 投票
1 回答
326 浏览

python - 使用任务管理器进行并行计算

我需要在 python 中运行一些并行计算。我能想到的唯一兼容的方法是多进程/分叉模型,由于以下几个原因,它不太理想:

  • 据我了解,窗户上的叉子很贵
  • 细粒度的进程管理(信号,即 SIGSTOP/SIGCONT)很笨重(即在语言之外)

这些是任务要求:

  • 任务可能会产生新任务
  • 任务必须在任务管理器中注册
  • 任务不需要共享状态
  • 任务必须返回一个值(python 对象)

任务管理器负责调度和限制并发任务的数量。这些是任务管理器要求:

  • 当一个新任务开始时,任务管理器可以根据预定的限制暂停其他任务
  • 当一个任务返回时,任务管理器可能会继续其他挂起的任务
  • 当请求任务的返回值时,任务管理器可能会重新组织任务优先级(防止死锁)

所以你看,任务管理器不需要是并行/并发进程。每个任务可以在启动或停止时对任务管理器进行同步调用。等待其他任务的任务也可能进行同步调用。

我似乎想不出任何其他方法:

  • asyncio 可以在有限的池中启动并行进程,但这种方法更适合数据并行而不是任务抢占。从外部抢占任务(挂起)与协作编程的事件不兼容。如果我错了,请纠正我,但是虽然我可以使用 asyncio,但它不会让我的生活更轻松(没有好处的抽象),因为我仍然需要使用进程,并在“任务启动/停止”事件上发出信号?
  • 无堆栈 python 可能是合适的,但它不是真正的 python?

有任何想法吗?

PS 我的最终目标是自动并行化(装饰)函数调用。任务管理器限制并行执行的任务数量(即递归函数)以避免颠簸(叉子炸弹)。我需要使用 python,即使懒惰(任务等待)、纯(无共享状态)和无堆栈(轻量级线程)语言可能更合适......

0 投票
2 回答
1989 浏览

python - 嵌入式python没有拾取PYTHONPATH

我对嵌入 python 有一个非常奇怪的问题。如果我不指定PYTHONPATH,则Py_Initialize失败并显示ImportError: No module named site.

如果我PYTHONPATH在 cmd 中设置然后运行我的程序,它可以工作!

如果我以PYTHONPATH编程方式(_putenv_s/ SetEnvironmentVariable)设置它会再次失败ImportError

我检查了该值是否设置为system("echo %PYTHONPATH%");,我多次确保它是正确的路径。我不知道它为什么会失败......任何想法都值得赞赏。

设置:win10 x64,嵌入C程序的无堆栈python 2.7 x86。

0 投票
1 回答
198 浏览

python - 如何在 Stackless Python 中进行无限(或非常深)递归?

我知道标准 CPython 对递归深度有限制,我认为小于 1000,因此下面的示例代码将失败,并出现“超出最大递归深度”错误。

听说 Stackless Python 支持无限递归深度,但是如果我用 Stackless Python 运行上面的代码,它仍然会报“超出最大递归深度”的错误。我想也许我需要以某种方式修改代码以使其能够使用 Stackless Python 的无限递归深度功能?

知道如何在 Stackless Python 中进行无限递归吗?谢谢。

注意:我知道如何将标准 CPython 的递归深度限制增加到 1000 以上,并且我知道如何将上述代码转换为简单的迭代,或者简单地使用高斯公式计算总和,这些都不是我要找的,以上代码仅作为示例。

编辑:就像我在上面的“注释”部分已经说过的(我猜没有人真正读过),我知道如何增加 CPython 的递归限制,并且我知道如何将示例代码转换为迭代或只是高斯和公式n * (n + 1) / 2,我只是在这里问,因为我听说 Stackless Python 的一大特点是它可以实现无限递归,我不知道如何为示例代码启用它。

EDIT2:我不确定我是否错误地理解了“Stackless Python 支持无限递归”的想法,但这里有一些资料表明(或暗示)Stackless Python 支持无限递归:

Stackless Python 的缺点是什么?

https://bitbucket.org/stackless-dev/stackless/issues/96

https://stackless.readthedocs.io/en/3.6-slp/whatsnew/stackless.html