python中的多重处理不会停止运行

时间:2019-02-19 06:09:38

标签: python process parallel-processing multiprocessing pool

我从他们的网站本身尝试了一个使用python进行多处理的简单示例,但是它没有提供任何输入。它显示为正在运行,我无法在jupyter笔记本电脑中停止它。

from multiprocessing import Pool

def f(x):
    return x*x

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

其他多处理示例也是如此。它不会给出任何错误或超时或其他任何信息。就像处于无限循环或死锁中一样。

2 个答案:

答案 0 :(得分:2)

我也在Windows上。

  1. 正如“从multiprocessing.pool导入ThreadPool作为池”指出的那样。
  2. 如果 name ==' main ',还需要添加:
  3. 还需要在其下方添加:'将Pool(4)作为游泳池:'

示例

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))

答案 1 :(得分:1)

我不知道如何操作,但是当我像下面给出的那样导入时,它会起作用。

from multiprocessing.pool import ThreadPool as Pool

问题出在导入多处理程序中。