Callback работает многопоточным, но не многопроцессорным - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть IMU тинкера, и я использую их библиотеку, которая использует обратный вызов для вывода данных.Я реализовал многопоточный подход, который прекрасно работает, но теперь я хочу сделать его многопроцессорным вместо этого для лучшего параллелизма.Мультипроцесс хорошо запускает функцию startIMUData, но не вызывает myIMUCallback.

def myIMUCallback():
    print("callback called!")

# Function to start recording IMU dimport serialata via callback function above
def startIMUData(q):
    print("Starting IMU!")

    HOST = "localhost"
    PORT = 4223
    UID = "6Dcx3Y" # Change XXYYZZ to the UID of your IMU Brick 2.0

    ipcon = IPConnection() # Create IP connection
    imu = BrickIMUV2(UID, ipcon) # Create device object

    ipcon.connect(HOST, PORT) 

    # myIMUCallback is NOT being called in process version
    imu.register_callback(imu.CALLBACK_ALL_DATA, myIMUCallback)

    imu.set_all_data_period(100)

if __name__ == "__main__":

    q = Queue()   
    # This works
    threadIMU = Thread(target = startIMUData, args = (q, ))
    threadIMU.start()
    threadIMU.join()

    #This doesn't work, calls startIMUData fine but ignores myIMUCallback
    processIMU = multiprocessing.Process(target=startIMUData, args=(q, ))
    processIMU.start()
    processIMU.join()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...