问题标签 [greenlets]
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.
python - 阻止greenlets有问题吗?
我理解阻塞代码对于事件循环(即 NodeJS)是一种罪过,但是对于 greenlets(我认为是绿色线程)呢?运行调用阻塞函数的代码是否存在问题?
python - 在 Linux x86_64 for PowerPC 上交叉编译 Python 的 greenlet 和 gevent
在我的 Linux x86_64 主机上,我正在尝试为我的 PowerPC 目标交叉编译一些额外的 Python 模块,特别是greenlet、gevent和gevent-websockets。目前,我只是试图交叉构建greenlet模块。
使用来自本网站的信息:
http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html
我能够使用此设置为我的构建环境交叉编译 Python 2.7.2
使用上述脚本配置我的环境,然后尝试构建 greenlet 模块会产生:
为什么 setup.py 从/usr/include/python2.7
我的主机系统中提取?我在我的目标上找不到那个目录。如何为我的目标创建它?
有什么建议么?
谢谢!
特雷弗
更新#1:
我对目标 rootfs 的主机副本的相对引用不正确。更正它并重新运行产量:
至少它找到了更多我的目标包含库,但现在我真的很难过!:(
还有什么建议吗?
谢谢!
更新#2:
通过将-save-temps
标志添加到编译器(上面更新了错误),我能够保存并检查上面错误消息中提到的中间汇编代码。虚线是:
MR(移动寄存器)操作相当简单,只接受 2 个 args ( mr to-reg, from-reg
)。我不知道如何添加带有附加注册号的括号。FWIW,这是上述头文件中引用的宏:
我开始怀疑这是否是编译器中的错误,因为宏看起来很简单!有什么建议么?... 谢谢!
python - PyMongo 和 gevent 的死锁
我在 Django 应用程序中一起使用 PyMongo 和 gevent。在生产中,它托管在 Gunicorn 上。
我在应用程序启动时创建了一个 Connection 对象。我有一些后台任务连续运行并每隔几秒钟执行一次数据库操作。
该应用程序还像任何 Django 应用程序一样提供 HTTP 请求。
我遇到的问题如下。它只发生在生产中,我无法在我的开发环境中重现它。当我让应用程序空闲一会儿(尽管后台任务仍在运行)时,在第一个 HTTP 请求(实际上是前几个)上,我执行的第一个“查找”操作永远不会完成。greenlet 实际上永远不会恢复。这会导致前几个 HTTP 请求超时。
我该如何解决?这是 gevent 和/或 PyMongo 中的错误吗?
python - Gevent greenlet 向父级冒泡异常
在使用 gevent 时,每当子 greenlet 抛出异常时,我希望它冒泡到父级(理想情况下让父级抛出异常)。在 greenlets 的文档中,它说这是自动完成的,但在 gevent 中似乎并非如此。
如何在 gevent 中冒泡异常?
谢谢!
asynchronous - 如何在单个应用程序中使用 gevent 和 tornado?
我正在同一个应用程序中使用 gevent 和 tornado,以便可以抑制不支持 tornado ioloop 的库以使用 gevent 进行异步操作。我想我需要运行两个真正的系统线程,一个专用于 Tornado 的 ioloop,另一个专用于 gevent 的循环。但是,尝试在系统线程中调用任何 gevent 函数会返回not implemented Error
, gevent cannot be used inside threads
。因此,我也尝试了猴子修补线程,如下面的片段所示
继续……
在一个单独的进程中,在命令行上,我运行以下命令。
这允许同时检索 15 个 url,并在收到它们时返回响应。我不太明白为什么上面的代码完全有效。如果线程被 gevent 修补并变成绿色线程,这意味着一次只有一个线程在运行,这意味着当 gevent 关闭获取新响应时,tornado 的 ioloop 将阻塞并且不会处理新请求,直到旧请求回来。有人可以解释 gevent 如何与 Tornado 的 ioloop 交互吗?
python - gevent 和 socksipy
我想知道是否有人尝试使用 [gevent][1] 和 [socksipy][2] 进行并发下载。
python - socket.io 连接上的 gevent 超时错误
我有一个包含清漆 nginx 和 2 个金字塔后端的设置,其中一个运行 socket.io 应用程序。所有堆栈都在我的本地开发计算机上正常工作,但我无法在生产计算机上使用 websocket 部分。当客户端 socket.io 尝试连接时导致 socketio 应用程序的错误的回溯:
我检查了所有 python 包版本,两台计算机都相同。还将生产计算机升级到 libevent 1.4.14b 以匹配本地计算机。
我不知道用哪种方法来调试它。帮助表示赞赏!
python - 等到几个greenlets之一完成
我有两个函数从两个不同的连接接收数据,我应该在从其中一个连接获得结果后关闭这两个连接。
然后我生成每个函数:
gevent.joinall
阻塞当前的greenlet,直到两个greenletlst
都准备好。
我想等到第一个或第二个greenlet准备好:
我该怎么做?
python - gevent pool.wait_available() 方法含义
看,人们。我们有一个关于 gevent.pool 类和 pool.wait_available() 方法的问题,两个代码片段
1.
2.
给我们类似的结果:
谁能解释 wait_available() 方法的含义?以及可能的使用情况。
=======update======== 我已经对它进行了修改,它可以正常工作,我只想知道这两个代码片段之间的区别。
python - Python 和真正的并发线程
我已经阅读了几个小时,我可以完全弄清楚 python 多线程是如何比单线程更快的。
这个问题确实源于 GIL。如果有 GIL,而且任何时候只有一个线程真正在运行,那么多线程怎么能比单线程快呢?
我读到了一些操作 GIL 被释放(比如写入文件)。这就是使多线程更快的原因吗?
关于绿叶。这些对并发有什么帮助?到目前为止,我看到的所有目的都是在函数和不太复杂的屈服函数之间轻松切换。
编辑:在世界上,像 Tornado 这样的服务器如何处理数千个同时连接?