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

标签 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]))

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

最佳答案

我也在 Windows 上。

  1. 正如所指出的,“from multiprocessing.pool import ThreadPool as Pool”有效。
  2. 您还需要添加 if name == 'ma​​in':
  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))

关于python - python中的多处理不会停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759827/

相关文章:

algorithm - 并行算法和数据结构

python - 将现有的 Webdriver 对象传递给机器人框架的自定义 Python 库

python - 解析以引号开头的 tsv 文件

c - 如何防止子进程中的 SIGINT 传播到父进程并杀死父进程?

function - 在多个函数中使用一个变量?

c# - 如何取消并发的繁重任务?

r - 函数内部的 parLapply 意外地将数据复制到节点

python - Numpy 一次将数组与多个标量进行比较

python - 如何用逗号将轴数格式格式化为千位

object - Emacs Lisp 网络连接 - 如何处理进程对象?