【问题标题】:gevent and twisted producer performance problemsgevent 和扭曲的生产者性能问题
【发布时间】:2013-09-28 12:14:20
【问题描述】:

我正在编写一个最小的服务器来使用twisted 输出一个永无止境的传感器数据流。

传感器数据捕获库使用 gevent 和一个内部 gevent.Queue 来存储我提供的数据。

由于某种原因,数据以极其缓慢且看似缓冲的方式发送。我已经检查过传感器是否以均匀且高速的速度生成数据,所以这不是问题。替换扭曲生产者中真实数据的出队并将其设置为常量也可以正常工作 - 因此它必须与 gevent 和扭曲的交互方式有关。

设置数据生成传感器的代码如下所示(在生产者构造函数中):

gevent.spawn(self._headset.setup)
gevent.sleep(1)

扭曲的 resumeProducing 函数如下所示:

def resumeProducing(self):
    self._paused = False
    while not self._paused:
        packet = self._headset.dequeue()
        sensors = packet.sensors
        data_str = ",".join(str(sensors[x]['value']) for x in sensor_names)
        self._proto.transport.write(data_str + '\n')

【问题讨论】:

    标签: python-2.7 twisted gevent


    【解决方案1】:

    我猜 gevent 循环运行不正常,你应该试试 Twisted 的 gevent 反应器:

    http://wiki.inportb.com/wiki/Projects:Python:Geventreactor

    在导入twisted之前插入这两行就很简单了:

    import geventreactor
    geventreactor.install()
    

    【讨论】:

    • 像魅力一样工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多