簡體   English   中英

使用線程進行多處理?

[英]Multiprocessing with threading?

當我嘗試使我的腳本多線程時,

我發現了多處理,

我想知道是否有辦法讓多處理與線程一起工作?

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

我試圖自己做,但我遇到了很多問題。

有沒有辦法讓這兩個人一起工作?

您可以生成許多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()

可以在每個Process內處理線程之間的通信,並且可以使用Queues或Manager對象在根解釋器級別處理進程之間的通信。

您可以定義一個function ,該function接受一個process並使其運行3個threads ,然后生成您的進程以定位此function ,例如:

def threader(process):
    for _ in range(3):
        threading.Thread(target=yourfunc).start()

def main():
    # spawn whatever processes here to target threader

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM