I have some expensive long-running functions that I'd like to run on multiple cores. This is easy to do with multiprocessing. But I will also need to periodically run a function that calculates a value based on the state (global variables) of a specific process. I think this should be possible by simply spawning a thread on the subprocess.
Here's a simplified example.  Please suggest how I can call procces_query_state().
import multiprocessing
import time
def process_runner(x: int):
    global xx
    xx = x
    while True:
        time.sleep(0.1)
        xx += 1  # actually an expensive calculation
def process_query_state() -> int:
    y = xx * 2 # actually an expenseive calculation
    return y
def main():
    processes = {}
    for x in range(10):
        p = multiprocessing.get_context('spawn').Process(target=process_runner, args=(x,))
        p.start()
        processes[x] = p
    while True:
        time.sleep(1)
        print(processes[3].process_query_state()) # this doesn't actually work
if __name__ == '__main__':
    main()