Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从计划事件返回值_Python_Multithreading_Scheduled Tasks - Fatal编程技术网

Python从计划事件返回值

Python从计划事件返回值,python,multithreading,scheduled-tasks,Python,Multithreading,Scheduled Tasks,我想获取由计划事件调用的函数返回的值。下面是我想做的一个简单的例子 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 va

我想获取由计划事件调用的函数返回的值。下面是我想做的一个简单的例子

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,ret = ret_this, ())
    schedule.run()
    print ret

也许需要一些背景知识。

我想创建一个服务器,它将侦听传入的连接(完成了)。当建立连接时,将产生一个新线程,套接字将被解析到该线程。在该线程上,发送到服务器的值将被读取,服务器将判断客户机试图调度的内容。一旦服务器知道客户端需要什么,它就会安排它。

如果用户希望在预定事件完成后查看信息(此答案出现在此处),则将等待事件结束并将返回的值发送给客户端。

如果没有,事件将被安排,客户端将收到“完成,再见。”并且连接将关闭。


我称之为编程之神,你能帮帮我吗。

问题其实很简单。您正在从
ret\u this
函数返回某些内容,但您没有将其放在任何位置,也没有打印它

编辑
请看这个

事实证明,我之前发布的代码只执行该函数,而不是在调度程序运行该函数时执行。 由于
scheduler.run
只运行一个函数,而不关心它返回的值,因此您必须将它存储在某个位置,才能真正知道调用它的时间

例如,在全局变量中:

def ret_this():
    global result
    result = "I'm called!"
或者从
ret\u this
打印它:

def ret_this():
    print "This."
编辑2
另一种存储方法是将其写入文件。您可以稍后再阅读:

def ret_this():
将open('output.txt','w')作为f:
f、 写下(“我被召唤!”)
如果_name__=“_main__”:
schedthis()
将open(“output.txt”,“r”)作为f:
打印(f.read())
如果执行成功,您的文件将包含
我被调用。否则,它将是空的


希望这有帮助

@alKid谢谢你的回复。有人能验证这个答案吗?当我尝试它时,会打印一个无值。如果我更改ret_this返回的值,我仍然会收到一个None值。我在Python2.7.4和3.3.2上测试了这一点,也许这在您的设置中起作用,因为这正是我想要的答案。我们可以开始聊天讨论吗?我正在用Python2.7测试它,它工作得很好。我马上给你看一下我的完整代码。我的代码似乎有错误,返回函数的是
enter
,而不是
run
。我会更新我的代码。我已经更新了我的答案,我的上一个答案并不正确。很抱歉给您带来不便。
def ret_this():
    print "This."