为什么问题里没有具体说明你需要这个, 所以很难知道你需要什么, 但我会给你一个一般的想法, 和代码。
您可以这样返回: return var1, var2, var3
(但这不是你需要的)
您有多个选项: 屏蔽或非屏蔽。 屏蔽意味着您调用此函数时您的代码将不再执行。 不屏蔽意味着它将平行运行。 您也应该知道您绝对需要修改调用该函数的代码 。
如果你们欲在一条线上加一条线,
def your_function(callback):
# This is a function defined inside of it, just for convenience, it can be any function.
def what_it_is_doing(callback):
import time
total = 0
while True:
time.sleep(1)
total += 1
# Here it is a callback function, but if you are using a
# GUI application (not only) for example (wx, Qt, GTK, ...) they usually have
# events/signals, you should be using this system.
callback(time_spent=total)
import thread
thread.start_new_thread(what_it_is_doing, tuple(callback))
# The way you would use it:
def what_I_want_to_do_with_each_bit_of_result(time_spent):
print "Time is:", time_spent
your_function(what_I_want_to_do_with_each_bit_of_result)
# Continue your code normally
另一个选项(阻塞)涉及一种特殊功能 < code> generators ,这些功能在技术上被作为迭代器处理。 因此,您将它定义为函数,并充当迭代器。 例如,使用与其他函数相同的假函数 :
def my_generator():
import time
total = 0
while True:
time.sleep(1)
total += 1
yield total
# And here s how you use it:
# You need it to be in a loop !!
for time_spent in my_generator():
print "Time spent is:", time_spent
# Or, you could use it that way, and call .next() manually:
my_gen = my_generator()
# When you need something from it:
time_spent = my_gen.next()
note 在第二个示例中,代码没有意义,因为代码没有在1秒间隔内真正被调用,因为每次调用 yeld
或 时,都有另一个代码运行。 下一步的
可能需要时间。 但我希望你明白这一点。
再次,它取决于您正在做什么, 如果您正在使用的应用程序有“ 活动” 框架或类似的框架, 您需要使用这个框架, 如果您需要它屏蔽/ 不阻塞, 如果时间很重要, 您的调用代码应该如何操纵结果...