python 池不起作用

标签 python multithreading

我正在尝试使用多线程,为了首先保持简单,我正在运行以下代码:

import multiprocessing as mp

pool = mp.Pool(4)

def square(x):

    return x**2

results=pool.map(square,range(1,20))

据我了解,结果应该是一个包含 1 到 20 的方 block 的列表。 但是,代码似乎没有终止。(在没有池眨眼间完成的情况下执行相同操作,这运行了几分钟,然后我手动停止它)。

附加信息:任务管理器告诉我,附加的 python 进程已启动并正在运行,但使用了 0% 的 CPU;当程序运行时,其他不相关的进程(例如 Firefox)的 CPU 使用率也会飙升。 我使用的是 Windows 8 和 i5-4300U cpu(池化为 2 个而不是 4 个也没有帮助)

我做错了什么? Pool 类上有什么好的资源可以帮助我了解我的代码有什么问题吗?

最佳答案

带有池初始化的代码应该位于__name__ == "__main__"内,因为multiprocessing每次都会导入模块以生成新进程。

import multiprocessing as mp

def square(x):
    return x**2

if __name__ == '__main__':
    pool = mp.Pool(4)
    results=pool.map(square,range(1,20))

关于python 池不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36101140/

相关文章:

python - 通过 Python 的 eval() 运行 JSON?

python - python中如何检查两个列表的内容是否相同?

python - 无法在 Scrapy 项目中使用代理

java - 并发周期任务运行

python - 即使使用 DJANGO 模型表单提交后,图片也不会在数据库中更新

python - 使用 python 从 firebase 注销

multithreading - wxpython线程处理任务并更新GUI原因

python - 为什么 super(Thread, self).__init__() 不能用于 threading.Thread 子类?

multithreading - 使用 NSOpenGLLayer 从单独的线程中绘制

概念线程问题