【发布时间】:2016-05-22 16:53:07
【问题描述】:
我想创建一个向上计数和向下计数的函数,并且我想每隔 500 毫秒从另一个函数访问计数值。
如何每 500 毫秒返回一次这个值 'a',这样我就可以在外部读取它,例如500 毫秒?
PS。我正在使用 Python 2.7
这是我目前使用 yield 的代码,但它没有给出我想要的:
import time
class PLCApplication(object):
def generate_data(self):
a = 0
countup = True
while a >= 0:
time.sleep(0.5)
if countup == True:
a += 2
else:
a -= 2
if a < 0:
countup = True
a += 2
if a == 12:
countup = False
a -= 2
yield a
while True:
plc = PLCApplication()
b = plc.generate_data()
for z in b:
time.sleep(0.5)
打印'z...',z
编辑:
这是我想要实现的功能。谢谢:
import time
from drawnow import *
import matplotlib.pyplot as plt
x = []
y = []
plt.ion()
class PLCApplication(object):
def generate_data(self):
a = 0
countup = True
while a >= 0:
time.sleep(0.5)
if countup: # no need to do test if it equals True
a += 2
else:
a -= 2
if a < 0:
countup = True
a += 2
if a == 12:
countup = False
a -= 2
yield a
def makefig(self):
plt.ylim(-10,30)
plt.plot(x, 'ro-', label='testgraph')
plt.grid(True)
if __name__ == '__main__':
plc = PLCApplication()
cnt = 0
for t in plc.generate_data():
i = t
x.append(int(i))
cnt=cnt+1
if cnt > 20:
x.pop(0)
print x, cnt
drawnow(plc.makefig)
【问题讨论】:
-
有什么要求?您是否尝试生成随机数?
-
你有什么问题?
-
roadrunner66:我想将值 a 分配给例如另一个函数中的值 b 并每隔例如更新值 b 500 毫秒。因此,想象函数 generate_data 每 500 毫秒计数一次并增加值“a”,同时另一个函数读取“generate_data”并将“a”的值分配给另一个函数中的“b”值。
-
martineau:我应该更清楚地说明我的问题。目前我产生了价值,但我不知道如何从外部访问它并在不中断 while 循环的情况下以“实时”模式读取它。如果我只是运行我粘贴的代码而不是进入 while 循环并不断倒数……
标签: python python-2.7 numbers counter