我在python中尝试了一些日期时间代码,所以我可以在一段代码上执行time.sleep like function,同时让其他代码运行。 这是我的代码:
import datetime, pygame
pygame.init()
secondtick = pygame.time.Clock()
timestr = str(datetime.datetime.now().time())
timelist = list(timestr)
timex = 1
while timex <= 6:
timelist.pop(0)
timex += 1
timex2 = 1
while timex2 <= 7:
timelist.pop(2)
timex2 += 1
secondstr1 = str("".join(timelist))
while 1:
timestr = str(datetime.datetime.now().time())
timelist = list(timestr)
timex = 1
while timex <= 6:
timelist.pop(0)
timex += 1
timex2 = 1
while timex2 <= 7:
timelist.pop(2)
timex2 += 1
secondstr2 = str("".join(timelist))
x = 1
if int(secondstr2) - x == int(secondstr1):
print(x)
x += 1
以下是结果:
C:\Python32\python.exe "C:/Users/depia/PycharmProjects/testing/test.py"
Traceback (most recent call last):
File "C:/Users/depia/PycharmProjects/testing/test.py", line 31, in <module>
timelist.pop(2)
IndexError: pop index out of range
Process finished with exit code 1
如果我在此处导入时间之后添加time.sleep(1):
-- code --
time.sleep(1)
secondstr2 = str("".join(timelist))
-- more code --
这是输出:
C:\Python32\python.exe "C:/Users/depia/PycharmProjects/testing/test.py"
1
然后它永远不会结束。它就像永远一样。有人可以帮忙吗?
答案 0 :(得分:0)
您可以使用pygame.time.get_ticks来控制时间。
首先将事件延迟1秒(1000毫秒),然后设置
end_time = pygame.time.get_ticks() + 1000
以后循环检查
if pygame.time.get_ticks() >= end_time:
do_something()
或甚至(每1000毫秒重复一次)
if pygame.time.get_ticks() >= end_time:
do_something()
end_time = pygame.time.get_ticks() + 1000
#end_time = end_time + 1000
这是控制同一循环中许多不同元素的时间的非常流行的方法。
或者您可以使用pygame.time.set_timer()每1000毫秒创建一个自己的事件。
首先设置
pygame.time.set_timer(pygame.USEREVENT+1, 1000)
以后循环检查
for event in pygame.event.get():
if event.type == pygame.USEREVENT+1:
do_something()
如果你必须定期做某事
,这很有用 BTW:使用0
关闭活动
pygame.time.set_timer(pygame.USEREVENT+1, 0)