[英]Multiprocessing with threading?
當我嘗試使我的腳本多線程時,
我發現了多處理,
我想知道是否有辦法讓多處理與線程一起工作?
我試圖自己做,但我遇到了很多問題。
有沒有辦法讓這兩個人一起工作?
您可以生成許多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.