多处理python的行为不符合预期

时间:2018-09-27 15:56:00

标签: python multiprocessing

您好,我正在使用多处理库运行main()中的两个不同的函数:

Coap = multiprocessing.Process(target=runCoapSync(iotComponent))
huis=multiprocessing.Process(target=runHuis(iotComponent))
huis.start()
Coap.start()

问题是函数runHuis()没有被触发,但是如果我注释了运行其他函数的行,则函数runHuis()会按预期工作。我在代码的其他地方使用了相同的结构,但是效果很好。

这是两个函数的代码:

def runHuis(iotDevice):
    print("----------------1---------------")
    LCD=iotDevice.connectedHUIs[0]
    while True:
        LCD.alertHuman(iotDevice.connectedSensors[0].data.value)

def runCoapSync(iotDevice):
    print("----------------2---------------")
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(runCoap(iotDevice))

1 个答案:

答案 0 :(得分:2)

multiprocessing.Process要求target是带有可选参数的可调用对象:

multiprocessing.Process(target=runCoapSync, args=(iotComponent,))

由于您正在调用它,因此其余程序将等待runCoapSync完成。