小编Pus*_*ade的帖子

如何在python中检查对象是否是生成器对象?

在python中,如何检查对象是否是生成器对象?

试试这个 -

>>> type(myobject, generator)
Run Code Online (Sandbox Code Playgroud)

给出错误 -

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'generator' is not defined
Run Code Online (Sandbox Code Playgroud)

(我知道我可以检查对象是否有一个next方法让它成为一个生成器,但我想用一些方法来确定任何对象的类型,而不仅仅是生成器.)

python generator

137
推荐指数
6
解决办法
4万
查看次数

在python中将stdout重定向到"nothing"

我有一个大型项目,包含足够多的模块,每个模块都打印到标准输出.现在随着项目规模的扩大,有大量的没有.print在std上打印很多的语句使程序变得相当慢.

所以,我现在想在运行时决定是否向stdout打印任何东西.我无法对模块进行更改,因为有很多模块.(我知道我可以将stdout重定向到一个文件,但即使这样也相当慢.)

所以我的问题是如何将stdout重定向到什么,即如何使print语句什么都不做?

# I want to do something like this.
sys.stdout = None         # this obviously will give an error as Nonetype object does not have any write method.
Run Code Online (Sandbox Code Playgroud)

目前我唯一的想法是创建一个具有write方法(什么都不做)的类,并将stdout重定向到这个类的实例.

class DontPrint(object):
    def write(*args): pass

dp = DontPrint()
sys.stdout = dp
Run Code Online (Sandbox Code Playgroud)

在python中有一个内置机制吗?还是有比这更好的东西?

python python-2.7

116
推荐指数
5
解决办法
8万
查看次数

在Python中,为什么用C语言实现的模块比纯Python模块更快,我怎么写一个?

python文档说,cPickle比Pickle更快的原因是,前者是用C实现的.这究竟是什么意思?

我正在使用Python制作高级数学模块,有些计算需要花费大量时间.这是否意味着如果我的程序在C中实现,它可以更快?

我想从其他Python程序导入这个模块,就像我可以导入cPickle一样.

你能解释一下如何在C中实现Python模块吗?

c python python-c-api

9
推荐指数
4
解决办法
3671
查看次数

机器上的线程数和cuda核心数之间的关系(在CUDA C中)

我的机器上安装了CUDA 2.1,它有一个带64个cuda核心的显卡.我编写了一个程序,我同时初始化30000个块(每个块1个线程).但是没有从gpu获得令人满意的结果(它的执行速度比cpu慢)

为了获得良好的性能,块的数量是否必须小于或等于内核的数量?或者是性能与块数无关

cuda

8
推荐指数
2
解决办法
5151
查看次数

python延迟执行print命令?

在我的python程序的某些部分,我需要这样做 -

  1. 在终端上打印消息(使用打印命令)
  2. 制作一些目录(使用os.mkdirs)
  3. 复制文件(使用shutil.copy2)
  4. 再次在终端上显示消息(使用打印命令)

(这一切都在循环中)

现在的问题是,虽然命令'1' 在'2'之前执行 ,'3.' 和'4.',它实际上显示命令'1'的消息 执行完所有4个命令后,屏幕上显示(以及命令'4'的消息).我想要的是它应该显示命令'1'的消息.首先,然后从剩下的代码开始......我怎样才能实现这一目标?(有没有像打印命令一样刷新?)

python printing

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

在python中使用模式匹配获取文件扩展名

我试图找到一个文件的扩展名,给它的名字作为字符串.我知道我可以使用的功能os.path.splitext,但它并不按预期的情况下,我的文件扩展名是.tar.gz.tar.bz2因为它提供了扩展的gzbz2,而不是tar.gztar.bz2分别.
所以我决定使用模式匹配自己找到文件的扩展名.

print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.gz')group('ext')
>>> gz            # I want this to come as 'tar.gz'
print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.bz2')group('ext')
>>> bz2           # I want this to come 'tar.bz2'
Run Code Online (Sandbox Code Playgroud)

我正在使用(?P<ext>...)我的模式匹配,因为我也希望得到扩展名.

请帮忙.

python regex

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

linux time命令微秒或更好的准确性

我希望知道在linux下执行程序所需的时间(以微秒为单位)(或更高的准确性).目前我正在使用该time命令,但它以最大毫秒精度给出了我.有没有办法调整time命令以提供更好的准确性或是否有其他命令相同?

linux time

5
推荐指数
2
解决办法
9723
查看次数

具有相交轮廓线的Matplotlib等高线图

我正在尝试使用python中的matplotlib制作以下数据的等高线图.数据属于这种形式 -

# x       y      height
  77.23  22.34     56
  77.53  22.87     63
  77.37  22.54     72
  77.29  22.44     88
Run Code Online (Sandbox Code Playgroud)

数据实际上包含近10,000个点,我正在从输入文件中读取这些点.然而,z的不同可能值的集合很小(在50-90之间,整数),并且我希望每个这样的不同z具有轮廓线.

这是我的代码 -

import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import csv
import sys

# read data from file
data = csv.reader(open(sys.argv[1], 'rb'), delimiter='|', quotechar='"')
x = []
y = []
z = []

for row in data:
    try:
        x.append(float(row[0]))
        y.append(float(row[1]))
        z.append(float(row[2]))
    except Exception as e:
        pass
        #print e

X, Y …
Run Code Online (Sandbox Code Playgroud)

python matplotlib contour

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

在python中导入时重定向C函数的stdout问题

我写了一个简单的C模块,使用printf打印到stdout.

// sample.c
func_print()
{
    printf("Hello World!\n");
}
Run Code Online (Sandbox Code Playgroud)

后来,我使用了这个包装器,SWIG所以我也可以func_print在我的python程序中使用它.在这个程序中,我已将stdout重定向到textctrl小部件.print正如预期的那样,我在textctrl小部件中正确打印的任何东西都能正确打印.

# sample.py
...
sys.stdout = textctrl          # textctrl is a TextCtrl widget (wxPython).
print 'Hello from Python!'     # prints in the textctrl widget, as expected.
Run Code Online (Sandbox Code Playgroud)

但是,当我调用C函数func_print()(来自sample.py)时,它会打印到终端而不是textctrl小部件.

func_print()                   # [Problem] prints to the terminal window, instead of the textctrl widget.  
Run Code Online (Sandbox Code Playgroud)

不知何故,似乎stdoutC模块中的for函数没有按预期重定向.请帮我解决这个问题.谢谢.

c python swig python-c-extension

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

为什么继承我们从类'对象'创建的任何类是一个好习惯?

在python中,为什么建议继承我们从类中创建的任何类object,为什么不直接将它作为基类?我注意到一个重要的事情是,__slots__如果我将我的类作为基类(而不是作为类的子类object),则声明不起作用.通过从班级继承我的班级,我还有哪些其他优点/缺点object

python class

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