重复产生相同的进程

Repeatedly spawning the same process

我需要一些帮助来解决这个问题。

我 运行 遇到的问题是进程 1 运行 内部有一个 for 循环,收集数据后我需要生成一个进程来分析它。

我的这段代码只会创建每个进程一次,如何为每个 data() for 循环重复进程 2? TIA

from multiprocessing import Process, Queue


def data(q):
    dosmth()
    for i in range(5):
        fetch_data()
        q.put('data has been added')


def analysis(q):
    msg = q.get()
    print(msg)
    process_data()

if __name__ == '__main__':
    q = Queue()
    processes = [Process(target=data, args=(q,)), Process(target=analysis, args=(q,))]
    for p in processes:
        p.start()
    for p in processes:
        p.join()
from multiprocessing import Process, Queue


def data(q):
    dosmth()
    processes = []
    for i in range(5):
        fetch_data()
        q.put('data has been added')
        processes.append(Process(target=analysis, args=(q,)))
    for p in processes:
        p.start()
    for p in processes:
        p.join()


def analysis(q):
    msg = q.get()
    print(msg)
    process_data()

if __name__ == '__main__':
    q = Queue()
    processes = [Process(target=data, args=(q,))]
    for p in processes:
        p.start()
    for p in processes:
        p.join()

或者更好的做法是直接传递数据,而不是队列进行分析。糟糕的是,如果您获得大量数据,您将启动大量效率低下的过程。

另一种方法是在 q.get() 时进行分析循环,以便分析每次调用可以处理多个数据。然后,无论有多少数据,您都可以实例化您认为最佳的尽可能多的分析。