【发布时间】:2018-09-25 03:00:41
【问题描述】:
脚本2
def timer():
time.sleep(10)
return True
retvalue = timer()
================================================ =========================== 脚本 1
retvalue = subprocess.call(['python', 'Script2.py'])
print(retvalue)
我也尝试过返回一个整数,但脚本 1 中的 retvalue 仍然为 0
【问题讨论】:
-
你基本上不会。您可以序列化一个对象并通过管道传输它。将其打印到标准输出并在另一侧读取是这样做的一种形式。
-
返回一个始终为 True 的值有什么意义?为什么你使用 subprocess 来运行该函数而不是导入它并正常调用它?
-
我正在尝试运行第二个脚本以及我可以执行的第一个脚本,并在它完成时返回一个值,这样第一个脚本就不会在等待代码时“挂起”结束。然后我会尝试使用线程来检查值并保持主程序运行。我在使用主程序中的函数的线程时遇到问题,因为它们是由事件触发的,所以我试图找到一种解决方法。
-
在这种情况下,您应该发布一个更实际的示例,最好是minimal reproducible example,以便我们可以帮助您使线程正常工作。但无论如何,在 Script2 中,您可以执行
sys.exit(retval)以返回数字退出代码。但这是一种非常笨拙的处理方式。 -
感谢您的指导,我将在下一篇文章中这样做。
标签: python python-3.x subprocess return-value