簡體   English   中英

python中的多處理不會停止運行

[英]multiprocessing in python does not stop running

我從他們的網站上嘗試了一個在 python 中進行多處理的簡單示例,但它沒有提供任何輸入。 它顯示為正在運行,我無法在 jupyter notebook 中停止它。

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

其他多處理示例也是如此。 它不會給出任何錯誤或超時或任何東西。 這就像處於無限循環或死鎖中。

我也在 Windows 上。

  1. 正如所指出的,'from multiprocessing.pool import ThreadPool as Pool' 有效。
  2. 您還需要添加 if name == ' main ':
  3. 在下面還需要添加:'with Pool(4) as pool:'

例子

from multiprocessing.pool import ThreadPool as Pool
from os import getpid
import time
import pandas as pd


pyfiles = [10,2,3,5]    

def scraper(x):
    results_df = pd.DataFrame({})
    print('Program started:',x,"I'm process", getpid())
    time.sleep(x)
    print('Program completed:',x)
    results_df.to_csv('multi{}.csv'.format(x))


if __name__ == '__main__':
    with Pool(4) as pool:
        start=time.time()
        result = pool.map(scraper, pyfiles)
        pool.terminate()
        pool.join()
        print("Time Taken: ",str(time.time()-start))

我不知道如何但是當我像下面給出的那樣導入時它起作用了。

from multiprocessing.pool import ThreadPool as Pool

問題在於導入多處理時的池。

暫無
暫無

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

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