我需要一个简单的类或函数来进行测试(可调用的对象返回True
或False
)以及在测试True
时调用的函数,可能会执行整个事情可能在另一个线程中。像这样的东西:
nums = []
t = TestClass(test=(lambda: len(nums) > 5),
func=(lambda: sys.stdout.write('condition met'))
for n in range(10):
nums.append(n)
time.sleep(1)
#after 6 loops, the message gets printed on screen.
感谢任何帮助。 (请不要因为我还是初学者而太复杂了)
答案 0 :(得分:0)
不完全确定你在问什么,但我认为这应该可以帮助你开始。
def test_something(condition, action, *args, **kwargs):
if condition():
action(*args, **kwargs)
def print_success():
print 'Success'
def test_one():
return True
test_something(test_one, print_success)
答案 1 :(得分:0)
你认为你可能需要一个单独的线程来检查后台条件是正确的。在这个单独的线程中,您还必须决定要检查的频率(还有其他方法可以执行此操作,但这种方式需要对您显示的代码进行最少的更改)。
我的回答只是使用了一个函数,但如果您愿意,可以轻松使用类:
from threading import Thread
import time
import sys
def myfn(test, callback):
while not test(): # check if the first function passed in evaluates to True
time.sleep(.001) # we need to wait to give the other thread time to run.
callback() # test() is True, so call callback.
nums = []
t = Thread(target=myfn, args=(lambda: len(nums) > 5,
lambda: sys.stdout.write('condition met')))
t.start() # start the thread to monitor for nums length changing
for n in range(10):
nums.append(n)
print nums # just to show you the progress
time.sleep(1)