为什么我所有的线程都作为main返回?

2024-09-28 22:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

此脚本打开和关闭2个Phidgets继电器(www.phidgets.com网站). 我想在不同的线程中打开和关闭继电器。下面的脚本运行,但将每个线程打印为主线程,如下所示

    Waiting for attach....
    172760 attached!
    Phidget InterfaceKit 8/8/8 model
    MainThread Starting
    relay state is True
    MainThread Exiting
    MainThread Starting
    relay state is True
    MainThread Exiting
    MainThread Starting
    relay state is False
    MainThread Exiting
    MainThread Starting
    relay state is False
    MainThread Exiting

谁能告诉我我做错了什么吗?提前谢谢。在

^{pr2}$

Tags: 脚本comfalsetrueiswww线程relay
2条回答

您在主线程中分别调用relayOnrelayOff两次,而不会在子线程中调用,因为它们根本不做任何事情。给targettargetrelayOn或{}的返回值,它(因为这些函数不返回任何内容)是None,因此线程不运行任何东西。在

解决此问题的一种方法是创建一个执行您所需操作的闭包:

t1 = threading.Thread( target=lambda: x.relayOn(0) )

等等

您需要将callable传递给target=,如下所示:

t1 = threading.Thread(target=lambda: x.relayOff(1))

目前,您所做的是在主线程上调用x.relay*,并将其返回值(即None)传递给None,因为在不显式返回的python函数中,None)返回到target=。在

相关问题 更多 >