小编Jim*_*ard的帖子

如何使用Cython在C Struct周围编写完整的Python包装器?

我正在使用Cython为Python的C库编写一个高级接口.
我有一个扩展类型A,它使用指向更复杂的C上下文结构的指针初始化库c_context.指针保存在A.
A还有一个def函数,它又创建另一个扩展类型B,用库函数调用初始化另一个C结构.进行后续库调用需要此结构B.
B需要c_context指针从A其通过我的扩展类型内包裹py_context,以便将其传递到__cinit__B:

#lib.pxd (C library definitions)
cdef extern from "lib.h":
    ctypedef struct c_context:
        pass

#file py_context.pxd
from lib cimport c_context

cdef class py_context:
    cdef c_context *context
    cdef create(cls, c_context *context)
    cdef c_context* get(self)

#file py_context.pyx
def class py_context:
    @staticmethod
    cdef create(cls, c_context *c):   
        cls = py_nfc_context()  
        cls.context = c  
        return cls

    cdef c_context* get(self): …
Run Code Online (Sandbox Code Playgroud)

c python wrapper cython

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

如何使用pip安装Openpyxl

我有Windows 10(64位).我想利用这个Openpyxl包开始学习如何与excel和其他电子表格进行交互.

我安装了Python,"windowsx86-64web-basedinstaller"我有64位操作系统,在尝试安装此版本时我错了吗?

命令提示符中的Python详细信息 Python安装选项 我在python的脚本文件夹中找到了一些pip.exes

python pip python-3.x openpyxl

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

'is'运算符与浮点数意外地表现

单元测试模块时遇到了一个令人困惑的问题.该模块实际上是铸造值,我想比较这些值.

是有区别的使用比较==is(部分,我小心的区别)

>>> 0.0 is 0.0
True   # as expected
>>> float(0.0) is 0.0
True   # as expected
Run Code Online (Sandbox Code Playgroud)

正如预期到现在,但这是我的"问题":

>>> float(0) is 0.0
False
>>> float(0) is float(0)
False
Run Code Online (Sandbox Code Playgroud)

为什么?至少最后一个对我来说真的很困惑.内部表示float(0)float(0.0)应该是平等的.与之比较==正如预期的那样.

python floating-point python-2.7 python-3.x python-internals

9
推荐指数
2
解决办法
797
查看次数

在docker容器中安装ssh

我有一台托管Docker容器的ubuntu机器.在docker容器中我正在运行一个Web服务,它必须使用docker主机的/ etc/password验证用户的密码.

我的观点是从docker容器ssh到docker主机.所以当我在docker容器中运行命令ssh时,它的ssh未找到.所以,基本上ssh没有安装在容器中.我如何在容器中安装ssh.有没有办法完成这种情况?

unix docker dockerfile

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

如何在宏派生中将字符串连接到 ident?

我需要创建一个宏派生,其中名称是函数名称的一部分。(这段代码不起作用,只是为了说明问题)

fn impl_logic(ast: &syn::DeriveInput) -> TokenStream {
    let name:&syn::Ident = &ast.ident;

    let gen = quote! {
       pub fn #name_logic() -> Arc<Mutex<UiAplicacion>> {
           ...
       }
    };

    gen.into()
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

rust rust-macros

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

将长整数列表转换为整数

[112L, 114L, 115L, 116L, 117L, 118L, 119L, 120L, 121L, 122L, 123L, 124L, 125L, 126L] 
Run Code Online (Sandbox Code Playgroud)

如何将此列表转换为这些提到的值的整数值列表?我试过int()但是它返回了一个错误.伙计们好吗?

python int list python-2.7

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

全局与本地命名空间性能差异

为什么在函数中执行一组命令:

def main():
    [do stuff]
    return something
print(main())
Run Code Online (Sandbox Code Playgroud)

在python中运行速度比在顶层执行命令1.5x3x快得多:

[do stuff]
print(something)
Run Code Online (Sandbox Code Playgroud)

python optimization python-2.7 python-3.x

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

Python 3类型提示用于性能优化

PEP 484说"使用类型提示进行性能优化是留给读者的练习." 这告诉我,就像Common Lisp一样,当我发誓我知道自己在做什么时,类型声明可用于在性能密集型函数中预留类型调度.为了自己尝试这个,我用一个p系列计算了一个基准来计算pi.首先,我以天真的方式做,然后我尝试聪明并利用类型提示的性能:

import math
import time

def baselpi0(n):
    baselsum = 0;
    for i in range(1,n):
        baselsum += 1.0 / (i * i)
    return math.sqrt(6.0 * baselsum)

def baselpi1(n : int) -> float:
    n = float(n)
    baselsum  = 0.0
    i = 1.0
    while i < n:
        baselsum += 1.0 / (i * i)
        i += 1.0
    return math.sqrt(6.0 * baselsum)

start = time.time()
print(baselpi0(1000000000))
end = time.time()
print(end - start)
start = time.time()
print(baselpi1(1000000000))
end = time.time()
print(end - …
Run Code Online (Sandbox Code Playgroud)

python type-hinting python-3.x

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

删除后为什么字典不会重新调整大小?

显然删除字典中的条目不会触发任何调整大小.只有在添加条目后才会触发调整大小.

这可以从以下内容中看出:

# Drastic example, nobody does such 
# things with dicts FWIK
from sys import getsizeof

d = {i:i for i in range(100)}
print(getsizeof(d))  # 4704
for i in range(100):
    del d[i]  # similarly with pop
print(getsizeof(d))  # 4704
d[0] = 1 # triggers resize
Run Code Online (Sandbox Code Playgroud)

以及关于SO的问题(来自我发现的).set它的行为方式类似,预计会与dicts的行为一致.

list另一方面,当新大小变为已分配的大小的一半时,调整大小; 这在list_resize评论中说明:

/* Bypass realloc() when a previous overallocation is large enough
   to accommodate the newsize.  If the newsize falls lower than half
   the allocated …
Run Code Online (Sandbox Code Playgroud)

python dictionary python-internals

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

async/await做了什么?

我试图在python中围绕async/await.

我是在正确的轨道上吗?

  • async@coroutine函数返回coroutine/generator,而不是返回值.
  • await 提取协程/发生器的实际返回值.
     

  • async 函数结果(coroutines)意味着要添加到事件循环中.

  • await 在事件循环和等待的协程之间创建"桥梁"(启用下一个点).
  • @coroutineyield直接与事件循环通信.(跳过等待结果的直接来电者)
     

  • await 只能在异步函数中使用.

  • yield只能在里面使用@coroutine.

(@coroutine= @types.coroutine)

python python-3.x async-await

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