我想从调度事件调用的函数返回值。以下是我想要做的一个简单示例。
import time
import sched
schedule = sched.scheduler(time.time, time.sleep)
def ret_this():
return "This."
def schedthis():
schedule.enter(2,1,ret_this, ())
schedule.run()
## <- print returned value here
if __name__ == "__main__":
schedthis()
我尝试过很多东西:
schedule.enter(2,1,print ret_this, ())
甚至:
schedule.enter(2,1,ret = ret_this, ())
schedule.run()
print ret
也许有必要提供一些背景知识。
我想创建一个监听传入连接的服务器(已完成)。建立连接时,将生成一个新线程,并将套接字解析为该线程。在该线程上,将读取发送到服务器的值,服务器将判断客户端尝试安排的内容。一旦服务器知道客户想要什么,它就会安排它。
如果用户想要在预定事件完成后查看信息(这个答案进来的话),那么它将等到事件结束并将返回的值发送给客户端。
如果没有,活动将被安排,客户将收到“完成,告别。”#34;连接将关闭。
我打电话给编程之神,请你帮助我。
答案 0 :(得分:2)
问题实际上很简单。你是从ret_this
函数返回的东西,但你没有把它放在任何地方,也不打印它!
修改强>
请参阅此
原来我之前发布的代码只执行该函数,而不是由调度程序运行。
由于scheduler.run
只运行一个函数而没有真正关心它返回的值,所以你必须将它存储在某个地方才能真正知道它何时被调用。
例如,在全局变量中:
def ret_this():
global result
result = "I'm called!"
或者只是从ret_this
打印出来:
def ret_this():
print "This."
编辑2
存储它的另一种方法是将其写入文件中。你可以稍后再读一遍:
def ret_this():
with open('output.txt', 'w') as f:
f.write('I'm called!')
if __name__ = "__main__":
schedthis()
with open("output.txt", 'r') as f:
print(f.read())
如果执行成功,您的文件将包含I'm called!
。否则,它将是空的。
希望这有帮助!