小编Rol*_*ith的帖子

在Python中的类之间共享全局变量

在面向对象编程方面,我对python的思考相对较新,而且对我而言相对较慢.

是否可以在具有多个函数的类之间传递全局变量?我在这里和其他来源广泛阅读了他们,但我仍然有点困惑.

我的最终目标是全局定义一个变量,在一个类的函数中为它赋值,然后在另一个类的函数中使用它.那可能吗?我正在为ArcMap构建一个pythonaddin,它需要每个按钮一个类.我想要一个按钮来为变量赋值,然后在脚本中的另一个类中使用该变量.

(在我得到高手之前,我知道首先使用全局变量是一种相对糟糕的形式,我正在努力学习)

例如,作为一个高度简化的例子:

x = []

class A():

    def func_1(self): 
        #populate the x variable
        global x 
        x = 1


class B():

    def func_2(self):
        global x
        #do stuff with x
Run Code Online (Sandbox Code Playgroud)

这是否可以接受(即使不是pythonic)?

python oop class python-2.7

7
推荐指数
2
解决办法
2万
查看次数

Python/numpy定位运行时警告

我有一个numpy脚本坐在一个应用服务器上,它被调用数千次,一次在蓝色的月亮我得到一个运行时警告:

/usr/local/lib/python2.7/dist-packages/scipy/stats/stats.py:2417: RuntimeWarning: invalid value encountered in double_scalars
r = (r_num / r_den)
Run Code Online (Sandbox Code Playgroud)
  1. 不知道发生了什么.
  2. 为什么会这样.
  3. 它对代码的后果如果有的话.一切都通过了眼睛测试和单元测试.

但是我再也不确定我是否正在寻找合适的地方,因为这种转变的可能性不到1%

如何让python打印出警告的位置?

python numpy

6
推荐指数
1
解决办法
3121
查看次数

linux procstat中的RES和PRES字段有什么区别

这是procstat输出的安全性:

  PID              START                END PRT  RES PRES REF SHD FL TP PATH
36502           0x400000           0x45d000 r-x   77    0  23  11 CN vn /usr/local/sbin/httpd
36502           0x65c000           0x660000 rw-    3    3   2   1 CN vn /usr/local/sbin/httpd
36502           0x660000           0x800000 rw-    5    4   2   1 CN sw
36502        0x80065c000        0x800693000 r-x   25    0  83  32 CN vn /libexec/ld-elf.so.1
Run Code Online (Sandbox Code Playgroud)

RES(驻留页面)和PRES(私有驻留页面)之间的主要区别是什么?与共享和私有内存有关吗?

并且有一个所谓的映射标志(CN)。据我了解,这些标志适用于每页基础知识,而不适用于整个内存段,因为标记为“写时复制”而不是段的页面。那么为什么procstat在整个段中显示它?

另一个问题是- 我可以从此输出中算出(写时复制过程中)真正复制了多少页面,父过程中还剩下多少页面?

请,你能帮忙弄清楚所有这些东西吗?我将非常感谢,谢谢

linux memory

5
推荐指数
1
解决办法
226
查看次数

python:求和的速度

我知道对数字列表求和的最快方法是使用内置函数sum。使用for循环求和可能比使用 更慢reduce。然而,当我尝试时,事实并非如此。有人可以解释这个结果吗?

import time, random, operator

sample = [random.randrange(10000) for _ in range(1000000)]

def use_for(l):
    acc = 0
    for n in l:
        acc += n
    print acc

def use_lambda(l):
    print reduce(operator.add, l)

print time.time()
use_for(l)
print time.time()
use_lambda(l)
print time.time()
Run Code Online (Sandbox Code Playgroud)

我得到的时间:

1479671513.04
4998734199
1479671513.07
4998734199
1479671513.13
Run Code Online (Sandbox Code Playgroud)

python performance

1
推荐指数
1
解决办法
1267
查看次数

标签 统计

python ×3

class ×1

linux ×1

memory ×1

numpy ×1

oop ×1

performance ×1

python-2.7 ×1