You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用导入的hx711py示例文件中cleanAndExit函数无法停止程序求助

核心问题原因
  • 第一:Python导入模块时会自动执行模块内所有顶层代码(也就是没有封装在函数、类中的代码)。你提供的example.py中包含无限循环的while True顶层代码,当你执行import example时,程序会直接卡在这个无限循环中持续输出重量数据,根本不会执行你新文件中后续的for循环和cleanAndExit()调用,所以你会觉得函数调用没生效。
  • 第二:你新写的测试文件存在语法错误,已经通过from time import sleep导入了休眠函数,直接调用sleep(5)即可,sleep.time(5)是错误写法,不过当前场景下你还没触发这个错误就已经被example.py的死循环卡住了。
解决步骤

1. 修改example.py,封装顶层执行逻辑

在example.py中,把除了导入语句、变量定义、函数定义之外的所有执行代码,都放到if __name__ == "__main__":判断下,这个判断的作用是:只有直接运行example.py文件时才会执行包裹的代码,被其他文件导入时不会执行。
修改后的example.py代码如下:

#! /usr/bin/python2
import time
import sys

EMULATE_HX711=False

if not EMULATE_HX711:
    import RPi.GPIO as GPIO
    from hx711 import HX711
else:
    from emulated_hx711 import HX711

def cleanAndExit():
    print("Cleaning...")
    if not EMULATE_HX711:
        GPIO.cleanup()
    print("Bye!")
    sys.exit()

# 以下是原来的顶层执行代码,全部放到main判断下
if __name__ == "__main__":
    hx = HX711(5, 6)
    hx.set_reading_format("MSB", "MSB")

    #---Actual Calibrated Weight and display value---#
    #referenceUnit = display value/actual weight -> Temporarily =1 until first calibration with load cells
    referenceUnit = 1
    hx.set_reference_unit(referenceUnit)
    hx.reset()
    hx.tare()

    print("Tare done! Add weight now...")

    while True:
        try:
            val = hx.get_weight(5)
            print(val)
            # 双通道读取的示例代码保留即可
            #val_A = hx.get_weight_A(5)
            #val_B = hx.get_weight_B(5)
            #print "A: %s  B: %s" % ( val_A, val_B )
            hx.power_down()
            hx.power_up()
            time.sleep(0.1)
        except (KeyboardInterrupt, SystemExit):
            cleanAndExit()

2. 修改你的测试文件代码

修正语法错误,调整后的代码如下:

import time
from time import sleep
import example
from example import cleanAndExit

for i in range(5):
    sleep(5)
cleanAndExit()
验证效果

修改完成后运行你的测试文件,导入example时不会再触发无限循环,程序会依次执行5次休眠,之后调用cleanAndExit()打印退出提示、清理GPIO资源后正常终止程序。

内容的提问来源于stack exchange,提问作者mhenrytran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:06:01