簡體   English   中英

Python 多處理。池工作人員保持空閑

[英]Python multiprocessing.Pool workers remain idle

我是 Python 的初學者。 我正在嘗試使用 multiprocessing.Pool 運行一個簡單的 function,但是當我運行該程序時,它沒有得到處理。 我可以看到產生了不同的進程,但它們仍然處於空閑狀態 例如,下面的代碼確實生成了兩個工作進程,但沒有 output 並且沒有別的:

import multiprocessing

def f(x):
    print("Process "+str(x))
    return True

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=2)            
    result = pool.map(f, range(1000)) 

我正在使用 Microsoft Visual Studio 2019 運行 Python 3.9。操作系統是 Windows 10。我在這台計算機上使用 Python 3 時遇到了同樣的問題。 我在另一台計算機上嘗試了相同的代碼(還有 Windows 10,VS2019),它工作正常。 不同的是,這個有一個i9 處理器,而另一個有一個 i7。

我在網上搜索過,但我沒有遇到任何類似的問題或任何解決我的問題的方法。 有誰知道為什么會發生這種情況和/或可能的修復? 處理器的類型可能與它有關嗎? 謝謝!

這只是一個猜測:

我知道這不會在 Jupyter Notebook 或交互式解釋器下運行。 請參閱多處理文檔,特別是以下部分:

在此處輸入圖像描述

這些環境的解決方案是將您的工人 function, f放在一個單獨的模塊中,例如worker.py ,然后導入工人 function:

import multiprocessing
from worker import f

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=2)
    result = pool.map(f, range(1000))          

試一試,讓我們知道其他也有 Visual Studio 的人是否有效。 謝謝。

暫無
暫無

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

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