greenlets相关内容

等到几个小菜之一完成

我有两个从两个不同的连接接收数据的函数,在从其中一个连接获得结果后,我应该关闭两个连接. def first():gevent.sleep(randint(1,100))#我不知道它将工作多少时间返回'foo'def second():gevent.sleep(randint(1,100))#我不知道它将工作多少时间返回“酒吧" 然后我生成每个函数: lst = [gevent.spa ..
发布时间:2021-05-10 19:24:20 Python

将多处理队列/字典/等等传递给绿色线程

将多处理对象(队列,字典等)传递给多个gevent线程是否安全?由于它们实际上不是并发运行的,所以我认为没有问题.但是,我知道gevent不应该与多处理特别兼容. 解决方案 不幸的是,目前看来 gevent 与 multiprocessing 中的对象不兼容: 这很危险. mp.Queue 和其他mp数据结构在内部利用信号量之类的东西: https://github.com/pyth ..
发布时间:2021-05-10 19:24:07 Python

在Greenlet中访问flask.g

我正在使用Flask + gevent,并且想访问 flask.g 在greenlet目标函数内部的全局应用程序. 我正在使用 copy_current_request_context 装饰器,情况很漂亮类似于文档中给出的示例: import gevent from flask import copy_current_request_context, g @app.route('/') d ..
发布时间:2020-11-13 22:17:50 Python

PyPy和PyPy + greenlet中的Stackless-差异

新版本的PyPy带有集成的 Stackless . 据我所知,捆绑的Stackless与2001年延续的原产Stackless不同.因此,主要是带有调度程序的绿色线程框架. Greenlet 是Stackless的衍生产品,它提供了Stackless绿色线程功能作为扩展模块. 使用 PyPy 中的“本机" Stackless 比使用 PyPy + greenlet +一些调度程序有什么 ..
发布时间:2020-11-13 22:12:49 Python

为什么我们需要gevent.queue?

我对Gevent的理解是,它只是并发而非并行。我对诸如Gevent和AsyncIO之类的并发机制的理解是,Python应用程序中没有任何一个同时执行。 最接近的是,调用非阻塞IO方法,并且在等待该调用以返回Python应用程序中的其他方法时可以执行。同样,Python应用程序中的所有方法均未真正同时执行Python代码。 话虽如此,为什么需要gevent.queue?在我看来,Pyth ..
发布时间:2020-10-07 21:23:00 Python

如何在与主程序不同的线程中编写套接字服务器(使用gevent)?

我正在开发Flask/gevent WSGIserver网络服务器,该服务器需要使用XML通过两个套接字与硬件设备(在后台)进行通信. 一个套接字由客户端(我的应用程序)启动,我可以将XML命令发送到设备.设备在另一个端口上应答,然后发回我的应用程序必须确认的信息.因此,我的应用程序必须侦听第二个端口. 到目前为止,我已经发出命令,打开了第二个端口作为服务器,等待设备的响应并关闭了第二 ..
发布时间:2020-05-13 22:14:58 Python

Python和真正的并发线程

我已经阅读了几个小时,我可以完全弄清楚python多线程比单线程要快的多. 这个问题确实源于GIL.如果有GIL,并且在任何时候实际上只有一个线程正在运行,那么多线程怎么会比单个线程快? 我了解到,通过一些操作,GIL已释放(例如写入文件).那是什么使多线程更快? 关于小菜.这些对并发有何帮助?到目前为止,我所看到的所有目的都是在函数之间轻松切换,并简化复杂的yield函数. ..
发布时间:2020-05-13 21:57:34 Python

格林莱特线程

我是gevents和greenlets的新手。我发现了一些关于如何使用greenlets的好的文档,但没有一个给我说明如何和何时使用greenlets的理由。 什么是 我不知道如果他们基本上是协同例程,他们如何能提供并发性。 解决方案 Greenlets提供并发,但不是 并行性。并发是指代码可以独立于其他代码运行。并行性是同时执行并发代码。当在用户空间中有很多工作要做时,并行性 ..
发布时间:2016-12-26 15:14:04 Python