我有一个数据部分,它在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")
谢谢。
答案 0 :(得分:0)
您已经关闭。正如您所注意到的,self.times
和self.Value
是元组,这是由于您要分配将data()
的整个输出压缩到其中的结果。实际上,您要执行的操作更简单:一次遍历data()
一对值:
def test(self):
for times, value in data():
self.timestamp.append(times)
self.loadingValue.append(value)