python 降低cpu_在处理大型numpy数组时,Python会随机降低到0%的CPU使用率,导致代码“挂断”?...

我一直在运行一些代码,其中一部分从二进制文件加载一个大的1D numpy数组,然后使用

numpy.where()方法更改数组.

以下是代码中执行的操作的示例:

import numpy as np

num = 2048

threshold = 0.5

with open(file, 'rb') as f:

arr = np.fromfile(f, dtype=np.float32, count=num**3)

arr *= threshold

arr = np.where(arr >= 1.0, 1.0, arr)

vol_avg = np.sum(arr)/(num**3)

# both arr and vol_avg needed later

我已经运行了很多次(在免费的机器上,即没有其他禁止CPU或内存使用)没有问题.但最近我注意到,有时候代码会挂起很长一段时间,使运行时间长一个数量级.在这些情况下,我一直在监视%CPU和内存使用率(使用gnome系统监视器),并发现python的CPU使用率降至0%.

在上述操作之间使用基本打印来调试,似乎是任意的,哪个操作导致暂停(即open(),np.fromfile(),np.where()各自分别导致随机运行挂起).这就好像我被随机扼杀,因为在其他运行中没有挂起.

我已经考虑过像垃圾收集或this question这样的东西,但我看不出与我的问题有任何明显的关系(例如击键没有效果).

进一步说明:二进制文件为32GB,机器(运行Linux)有256GB内存.我通过ssh会话远程运行此代码.

编辑:这可能是偶然的,但我注意到,如果我刚刚重启机器后运行代码,就没有挂断.似乎它们在几次运行后开始发生,或者至少是系统的其他用途.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值