greenlets

    1热度

    1回答

    我通过继承Greenlet来创建任务。我有一项父母任务,在_run()的两个孩子身上拨打start()。在其他地方(恰好是系统服务)start()和join()被调用。 行为似乎是正确的。例如,使用带有超时的Queue可以达到所需的效果,但我还没有找到一种很好的方法来从说KeyboardInterrupt中关闭子项或通过向SIGTERM的父任务注册回调。在处理程序中,我会打电话child1.kil

    7热度

    1回答

    我正在尝试创建一个将有事件循环的GUI框架。一些线程来处理用户界面,一些用于事件处理。我搜索了一下,发现了这三个库,我想知道哪一个更好用?优缺点都有什么? 我可以用这三个库之一,甚至创建通过使用python 线程,或并发库创造的东西为我自己。 我会很高兴分享任何类型的经验,基准和比较。

    0热度

    1回答

    首先,下面的代码理想情况下应该同步运行3个greenlet,但相反,它会异步运行所有3个greenlet。然而,奇怪的事情发生了,无论你有多少个greenlet,它都会为第二个greenlet启动一个额外的同步过程。我不是问这个问题的解决方法,只是我想了解背后的原因。 import gevent import time def func(i): t = time.time()

    1热度

    1回答

    我对Gevent/Greenlet很新,并且已经通过了教程。 我想为每个注册团队运行一个bot。 for bot in self.bots: events.append(gevent.spawn(bot.start)) gevent.joinall(events) 有趣的是,如果我不使用while true环,我在控制台中所示的两个机器人的bot_id。 def start(sel

    0热度

    1回答

    如何可视化常规调用堆栈并计算内部和外部执行时间非常明显。但是,如果有人处理过协程,调用堆栈看起来可能非常混乱。我的意思是说,协程可能不会执行到它的父节点,而是执行到另一个协程(例如greenlet)。是否有一些常见的方法可以为这种情况制定一致的分析输出结果?

    0热度

    1回答

    我想了解Gevent/Greenlet选择下一个要运行的greenlet的方式。线程使用OS调度程序。 Go Runtime使用2个层次队列。 默认情况下,Gevent使用libevent进行测试。 但是,如果许多人准备好,libevent如何选择下一个greenlet跑呢? 它是随机的吗? 我已经阅读了他们的文档,并看到了源代码。仍不知道。 更新:文本更改为承认Gevent使用libevent。

    1热度

    1回答

    我做了一个快速谷歌,并没有能够找到任何权威性的声明。基本上,我正在尝试从SQS中读取事件并对其进行处理,并且预计asio将由greenlet处理。 那么boto3的粒度可以在greenlet中使用吗?我是否需要每个greenlet的会话/客户端?我需要额外的互斥吗?

    0热度

    1回答

    我有以下Python代码: >>> import gevent >>> from gevent import monkey; monkey.patch_all() >>> >>> def fooFn(k): ... return 'gevent_'+k ... >>> threads = [] >>> threads.append(gevent.spawn(fooFn,'0'))

    4热度

    1回答

    现在,我使用GEVENT运行的异步任务,我想请教两个问题: 有没有办法来执行,这将永远异步执行特定任务(而不是在每个任务中使用锁) 有没有办法让优先 Gevent中产生的任务?就像一组将在所有其他任务完成时将执行的优先级较低的任务。 例如,即听不同的插座时,每个任务处理各种优先插座请求 如果它不可能在GEVENT,是有它可以做任何其他库两项任务? 编辑 也许芹菜可帮助我在这里?

    0热度

    1回答

    我想将一个异步工作实现到我的一个测试函数中。 功能,启发式,看起来是这样的 - def test_sessions(self): sessions = [] """ Creating 10k session instances """ for i in xrange(10000): sessions.append(Session.cre