实时获取while循环中的值

时间:2018-09-07 11:53:23

标签: python

我有一个数据部分,它在while循环中连续生成数据。我需要使用在data()下生成的值来执行进一步的步骤,例如绘制图像。

我首先在"return"中使用data(),然后发现该值仅返回一次。然后,我尝试像这样在数据部分中使用yield

这是我的代码:

def data():
    while True:
        try:
            navigationStart = driver.execute_script("return window.performance.timing.navigationStart")
            # domComplete = driver.execute_script("return window.performance.timing.domComplete")
            loadEvent = driver.execute_script("return window.performance.timing. loadEventEnd")
            onloadPerformance = loadEvent - navigationStart
            dtime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            print(dtime, ",", onloadPerformance, "ms")

            yield dtime, onloadPerformance
            driver.refresh()

数据部分的格式如下:

2018-09-07 18:00:20 1100ms
2018-09-07 18:01:10 400ms
......

需要从data()获取值以执行以下操作:

Class A():
xxxxx
    def test(self):
        self.times, self.Value=zip(*data())
        self.timestamp.append(self.times)
        self.loadingValue.append(self.Value)

但是事实证明,时间和值是元组类型。我该如何用str类型而不是元组一对一地追加数据?

我想要的是:

self.timestamp.append("2018-09-07 18:00:20")
self.timestamp.append("2018-09-07 18:01:10")

谢谢。

1 个答案:

答案 0 :(得分:0)

您已经关闭。正如您所注意到的,self.timesself.Value是元组,这是由于您要分配将data()的整个输出压缩到其中的结果。实际上,您要执行的操作更简单:一次遍历data()一对值:

def test(self):
    for times, value in data():
        self.timestamp.append(times)
        self.loadingValue.append(value)