当时我正在做一个python myprogra.py &
并让这个程序做它的事情:
import urllib2
import threading
import json
url = 'https://something.com'
a = []
def refresh():
# refresh in 5 minutes
threading.Timer(300.0, refresh).start()
# open url
try:
data = urllib2.urlopen(url).read(1000)
except:
return 0
# decode json
q = data.decode('utf-8')
q = json.loads(q)
# store in a
a.append(q['ticker'])
if len(a) > 288:
a.pop()
truc = json.dumps(a)
f = open('ticker.json', 'w')
f.write(truc)
f.close()
refresh()
我有两个问题:
怎么来的,因为我没有在函数开头写global a
我应该使用cron来代替我正在做的事吗? (我使用的是debian服务器)
答案 0 :(得分:1)
以您的方式访问变量a
没有问题,因为您从未在refresh
函数中分配变量url
。它的访问方式与json
变量的访问方式相同,甚至可以访问a
导入。如果您要分配给append
(而不是在其上调用诸如global
之类的方法),那么您将创建一个遮蔽全局a的局部变量。 a
关键字可以避免为分配创建局部变量。
您是否使用睡眠程序或cron,取决于您,但请注意以下事项: