使用线程进行多处理?

at *_*r91 4 python web-crawler python-3.x

当我尝试使我的脚本多线程时,

我发现了多处理,

我想知道是否有办法让多处理与线程一起工作?

  • cpu 1 - > 3个线程(工人A,B,C)
  • cpu 2 - > 3个线程(工人D,E,F)
  • ...

我试图自己做,但我遇到了很多问题.

有没有办法让这两个人一起工作?

JAu*_*tin 5

您可以生成一些Processes,然后Threads从它们内部生成.每个进程几乎可以处理标准解释器线程可以处理的任何内容,因此没有什么能阻止您在每个进程中创建新的线程甚至是新的进程.作为一个最小的例子:

def foo():
    print("Thread Executing!")

def bar():
    threads = []
    for _ in range(3): # each Process creates a number of new Threads
        thread = threading.Thread(target=foo) 
        threads.append(thread)
        thread.start()
    for thread in threads:
        thread.join()

if __name__ == "__main__": 
    processes = []
    for _ in range(3):
        p = multiprocessing.Process(target=bar) # create a new Process
        p.start()
        processes.append(p)
    for process in processes:
        process.join()
Run Code Online (Sandbox Code Playgroud)

可以在每个线程内处理线程Process之间的通信,并且可以使用队列或管理器对象在根解释器级别处理进程之间的通信.