0

我有一个关于 python 定义流程的问题:

def testCommandA () :
  waitForResult = testCommandB ()
  if result != '' :
     print 'yay'

有没有办法让 waitForResult 等待 testCommandB 返回一些东西(不仅仅是一个空字符串)?有时 testCommandB 什么都不会产生(空字符串),我不想传递空字符串,但是一旦我在 waitForResult 中得到一个字符串,那么 testCommandA 将继续运行。可能吗?

提前致谢

4

2 回答 2

3
# Start with an empty string so we run this next section at least once
result = ''
# Repeat this section until we get a non-empty string
while result == '':
    result = testCommandB()
print("result is: " + result)

请注意,如果testCommandB()不阻塞,这将导致 100% 的 CPU 利用率,直到它完成。另一种选择是在检查之间休眠。此版本每十分之一秒检查一次:

import time

result = ''
while result == '':
    time.sleep(0.1)
    result = testCommandB()
print("result is: " + result)
于 2012-07-17T15:42:44.780 回答
1

只从testCommandB它不是空字符串的地方返回。即,testCommandB阻塞直到它具有有意义的值。

于 2012-07-17T15:42:33.010 回答