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

python中的多处理不会停止运行,python,process,parallel-processing,multiprocessing,pool,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])) 其他多处理示例也是如此。它不会给出任何错误、超时或任何东西。这就像是在一个无限循环或死锁中 我

我在他们的网站上尝试了一个简单的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]))

其他多处理示例也是如此。它不会给出任何错误、超时或任何东西。这就像是在一个无限循环或死锁中

我不知道它是如何工作的,但当我像下面给出的那样导入时

from multiprocessing.pool import ThreadPool as Pool

问题在于导入多处理时的池。

我不知道如何导入,但它在导入时工作,如下所示

from multiprocessing.pool import ThreadPool as Pool
导入多处理时出现池问题。

我也在Windows上

  • 正如所指出的,“从multiprocessing.pool导入ThreadPool As pool”是有效的
  • 您还需要添加ifname='main':
  • 您还需要在下面添加:'将池(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))
    
    我也在Windows上

  • 正如所指出的,“从multiprocessing.pool导入ThreadPool As pool”是有效的
  • 您还需要添加ifname='main':
  • 您还需要在下面添加:'将池(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))
    

    我可以在终端和笔记本电脑中运行这个示例,它工作得很好:我不知道,像这样导入时出现了一些问题。但是,当我在回答中使用as时,它起了作用。我在linux中尝试了这一点,它起了作用。但我在windows中运行这个。我可以在终端和笔记本电脑中运行这个示例,它工作正常:我不知道,像这样导入时出现了一些问题。但是,当我在回答中使用as时,它起了作用。我在linux中尝试了这一点,它起了作用。但是我在windows中运行这个。