多进程在windows安装的jupyter notebook 可能运行不了,显示一直运行

博客主要围绕Python多进程进行质数判断展开。展示了在Jupyter Notebook、不同操作系统(Mac、Linux、Windows)及不同开发环境(Spyder)下的代码实现,还引入了numba库进行优化,解决了部分环境下代码运行的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#jupyter Notebook

import multiprocessing as mp

pool = mp.Pool(processes =4)

p1 = int(1e8 + 7)

#Determine whether it is a prime number
def is_prime(I):
    if I%2 ==0:#################
        return False
    for i in range(3, int(I**0.5) + 1, 2): ###############
        if I%i ==0:##########
            return False##########
    return True#######

%time pool.map(is_prime, 10*[p1])

mac 或者 Linux 或许可以运行得到如下结果

我在windows版本下一直运行就是没有结果

之后在 Spyder中因为运行不了所以更改了代码

import multiprocessing as mp
p1 = int(1e8 + 7)

#Determine whether it is a prime number
def is_prime(I):
    if I%2 ==0:#################
        return False
    for i in range(3, int(I**0.5) + 1, 2): ###############
        if I%i ==0:##########
            return False##########
    return True#######

if __name__ == '__main__':
    pool = mp.Pool(processes =4)
    print(pool.map(is_prime, 10*[p1]) )

2. #Jupyter in MAC OS or Linux OS 

import numba
import multiprocessing as mp

p2 = 100109100129162907

pool = mp.Pool(processes =4)

#Determine whether it is a prime number
def is_prime(I):
    if I%2 ==0:#################
        return False
    for i in range(3, int(I**0.5) + 1, 2): ###############
        if I%i ==0:##########
            return False##########
    return True#######

#pool.map(is_prime_nb, 10 * [p2])
is_prime_nb = numba.jit(is_prime)

show:

#Spyder in windows 7

import numba
import multiprocessing as mp

p2 = 100109100129162907

#Determine whether it is a prime number
def is_prime(I):
    if I%2 ==0:#################
        return False
    for i in range(3, int(I**0.5) + 1, 2): ###############
        if I%i ==0:##########
            return False##########
    return True#######

#pool.map(is_prime_nb, 10 * [p2])
is_prime_nb = numba.jit(is_prime)

if __name__ == '__main__':
    pool = mp.Pool(processes =4)
    print(pool.map(is_prime_nb, 10 * [p2]) )

<think>嗯,用户问的是Jupyter Notebook运行内存占用有多大。首先,我需要回忆一下Jupyter Notebook的基本结构。它由前端浏览器界面和后端的Kernel组成,所以内存占用应该分两部分来看。 前端部分,也就是浏览器里的界面,这个占用的内存应该和普通网页应用差不多,可能几十MB到几百MB不等,具体取决于打开的标签页数量和使用的扩展功能。不过这部分可能用户不太关心,他们更在意的是Kernel的内存使用。 然后是Kernel,比如IPython运行代码时的内存主要取决于代码本身。比如加载大型数据集,比如pandas读取几个GB的CSV,这时候内存就会涨很多。如果用户跑的是机器学习模型,像TensorFlow或PyTorch训练模型,显存和内存都会增加。但Jupyter本身占用的基础内存应该不大,可能几百MB左右。 还要考虑同时打开的Notebook数量和运行的进程。如果用户同时运行多个Kernel,每个都会占用内存。另外,浏览器本身也比较吃内存,尤其是Chrome之类的,可能会影响整体内存消耗。 用户可能想知道的是在一般情况下的内存使用情况,或者有没有优化方法。可能需要建议他们监控自己的内存使用,比如用psutil或者系统自带的任务管理器。另外,提醒他们及时关闭不需要的Kernel,避免加载过大的数据,或者使用Dask这样的库来处理内存问题。 可能需要分点回答,先讲前端和Kernel的区别,再具体到不同情况下的内存占用,最后给出优化建议。这样结构清晰,用户看了也明白。</think>Jupyter Notebook 的内存占用取决于多个因素,以下是具体分析: **1. 核心组件内存分布** - **前端界面**(浏览器中运行的网页):约 50-300 MB 取决于浏览器性能、扩展插件和打开的页面数量(如同时打开多个 Notebook 标签页) - **后端服务**(Jupyter Server):约 100-200 MB 基础服务进程的内存开销 - **内核进程**(如 IPython Kernel):约 200 MB 起 空载状态下的基础内存占用 **2. 典型场景内存消耗** | 场景 | 内存需求 | |------|----------| | 处理 1GB CSV 文件(Pandas)| 3-5 GB(数据加载后膨胀) | | 训练小型神经网络(如 MNIST)| 1-2 GB | | 运行 Matplotlib 可视化 | 增加 200-500 MB | | 开启 3 个并行内核 | 基础内存 ×3 + 业务内存 | **3. 内存优化建议** - 使用 `%reset -f` 定期清理变量 - 大数据场景改用 Dask 或 Modin 库 - 通过 `tracemalloc` 监控内存: ```python import tracemalloc tracemalloc.start() # 运行代码后查看: snapshot = tracemalloc.take_snapshot() top_stats = snapshot.statistics('lineno') for stat in top_stats[:5]: print(stat) ``` - 关闭未使用的内核(通过 `Kernel > Shutdown`) **4. 实测数据参考** - 全新启动:约 400-600 MB(含浏览器) - 加载 10 万行数据集:增至 1.2-1.8 GB - 训练随机森林模型(sklearn):峰值 2.3 GB 建议通过系统任务管理器(Windows)或 `htop`(Linux/macOS)实时监控内存变化。对于长期运行Notebook,可考虑改用 JupyterLab 或 VS Code 增强内存管理能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIQING LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值