我正在处理代码,并使用warnings
库抛出了很多(对我而言)无用的警告.阅读(/扫描)文档我只发现了一种禁用单个函数警告的方法.但我不想改变这么多的代码.
可能有旗帜python -no-warning foo.py
吗?
你会推荐什么?
我刚刚切换到Pycharm,我很高兴它提供了所有警告和提示,以改进我的代码.除了这个我不明白的:
This inspection detects shadowing names defined in outer scopes.
我知道从外部作用域访问变量是不好的做法但是遮蔽外部作用域的问题是什么?
这是一个例子,Pycharm给了我警告信息:
data = [4, 5, 6]
def print_data(data): # <-- Warning: "Shadows 'data' from outer scope
print data
print_data(data)
Run Code Online (Sandbox Code Playgroud) 为了调试CUDA代码和检查兼容性,我需要找出我安装的GPU的nvidia驱动程序版本.我找到了如何获得cuda版本?但这对我没有帮助.
我想将已经缩进的Python代码/整个函数和类复制到IPython中.每次我尝试缩进都搞砸了,我得到以下错误信息:
IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)
If you want to paste code into IPython, try the %paste and %cpaste magic functions.
我使用外部模块(libsvm),它不支持numpy数组,只支持元组,列表和dicts.但是我的数据是2d numpy数组.我怎样才能将它转换为pythonic方式,又称没有循环.
>>> import numpy
>>> array = numpy.ones((2,4))
>>> data_list = list(array)
>>> data_list
[array([ 1., 1., 1., 1.]), array([ 1., 1., 1., 1.])]
>>> type(data_list[0])
<type 'numpy.ndarray'> # <= what I don't want
# non pythonic way using for loop
>>> newdata=list()
>>> for line in data_list:
... line = list(line)
... newdata.append(line)
>>> type(newdata[0])
<type 'list'> # <= what I want
Run Code Online (Sandbox Code Playgroud) 当没有给出参数时,我的脚本应该启动演示模式.我试过这个:
args = parser.parse_args()
if len(args) == 0:
run_demo()
else:
# evaluate args
Run Code Online (Sandbox Code Playgroud)
这给*** TypeError: object of type 'Namespace' has no len()
作为args
是没有列表.
我怎样才能达到我想要的目标?
我使用以下代码来从文件中读取数据,作为更大程序的一部分.
double data_read(FILE *stream,int code) {
char data[8];
switch(code) {
case 0x08:
return (unsigned char)fgetc(stream);
case 0x09:
return (signed char)fgetc(stream);
case 0x0b:
data[1] = fgetc(stream);
data[0] = fgetc(stream);
return *(short*)data;
case 0x0c:
for(int i=3;i>=0;i--)
data[i] = fgetc(stream);
return *(int*)data;
case 0x0d:
for(int i=3;i>=0;i--)
data[i] = fgetc(stream);
return *(float*)data;
case 0x0e:
for(int i=7;i>=0;i--)
data[i] = fgetc(stream);
return *(double*)data;
}
die("data read failed");
return 1;
}
Run Code Online (Sandbox Code Playgroud)
现在我被告知使用-O2
,我得到以下gcc警告:
warning: dereferencing type-punned pointer will break strict-aliasing rules
谷歌我找到了两个正交的答案:
VS
通过NVIDIA论坛搜索,我发现了这些问题,我也感兴趣,但在过去四天左右没有人回答过这些问题.你能帮我吗?
深入研究OpenCL阅读教程有些事情对我来说还不清楚.以下是关于本地和全球工作规模的问题集.
必须
global_work_size
小于CL_DEVICE_MAX_WORK_ITEM_SIZES
?在我的机器上CL_DEVICE_MAX_WORK_ITEM_SIZES
= 512,512,64.是否
CL_KERNEL_WORK_GROUP_SIZE
推荐work_group_size
使用内核?
- 或者这
work_group_size
是GPU允许的唯一?在我的机器上CL_KERNEL_WORK_GROUP_SIZE
= 512我是否需要分成工作组,或者我只能有一个,但没有指定
local_work_size
?
- 当我只有一个工作组时,我需要注意什么?
什么
CL_DEVICE_MAX_WORK_GROUP_SIZE
意思?在我的机器上CL_DEVICE_MAX_WORK_GROUP_SIZE
= 512,512,64
- 这是否意味着,我可以拥有一个与工作组一样大的工作组
CL_DEVICE_MAX_WORK_ITEM_SIZES
?有
global_work_size
要的除数CL_DEVICE_MAX_WORK_ITEM_SIZES
?在我的代码global_work_size
= 20.