我有这段代码:
import logging
print(logging.__file__)
我想要“你好,世界!”每秒打印一次,但是当我运行代码没有任何反应时,这个过程就会保持活跃。
我已经阅读了这些代码确切适用于人们的帖子。
我很困惑在python中设置适当的间隔是多么困难,因为我已经习惯了JavaScript。我觉得我错过了什么。
非常感谢帮助。
答案 0 :(得分:2)
我没有看到您当前的方法存在任何问题。它在Python 2.7和3.4.5中都适合我。
import threading
def printit():
print ("Hello, World!")
# threading.Timer(1.0, printit).start()
# ^ why you need this? However it works with it too
threading.Timer(1.0, printit).start()
打印:
Hello, World!
Hello, World!
但我建议启动该主题为:
thread = threading.Timer(1.0, printit)
thread.start()
这样你就可以使用:
来停止线程thread.cancel()
如果没有Timer
类的对象,则必须关闭解释器才能停止该线程。
替代方法:
我个人更喜欢通过将Thread
类扩展为:
from threading import Thread, Event
class MyThread(Thread):
def __init__(self, event):
Thread.__init__(self)
self.stopped = event
def run(self):
while not self.stopped.wait(0.5):
print("Thread is running..")
然后使用Event
类的对象启动线程:
my_event = Event()
thread = MyThread(my_event)
thread.start()
您将开始在屏幕上看到以下输出:
Thread is running..
Thread is running..
Thread is running..
Thread is running..
要停止该线程,请执行:
my_event.set()
这为修改未来的变化提供了更大的灵活性。
答案 1 :(得分:1)
我在python 3.6中运行它。它按预期工作正常。
答案 2 :(得分:1)
试试这个:
import time
def display():
for i in range(1,5):
time.sleep(1)
print("hello world")
答案 3 :(得分:0)
我使用过Python 3.6.0 我使用了_thread和time package。
import time
import _thread as t
def a(nothing=0):
print('hi',nothing)
time.sleep(1)
t.start_new_thread(a,(nothing+1,))
t.start_new_thread(a,(1,))#first argument function name and second argument is tuple as a parameterlist.
o / p就像是 嗨1 你好2 你好3 ....
答案 4 :(得分:0)
可能的问题是,每次运行printit时都要创建一个新线程。
一种更好的方法可能是创建一个线程,该线程可以执行您想要执行的任何操作,然后出于某种原因发送并发送事件以使其终止:
import pandas as pd
df = pd.read_csv('./sample.csv')
df['Date'] = pd.to_datetime(df['Date'])
print df[(df['Date'].dt.hour == 23) & (df['Date'].dt.minute < 50)]