2012-03-23 26 views
1

是否有任何有关使用C语言编写的模块使用更高级Python结构的最佳实践,例如threading.Conditioncollections.deque?特别是:使用来自C的更高级Python结构

  1. 避免字典查找费用,方法和成员
  2. 访问这些构建体的部件即在C为直接尽可能
  3. 当在本地重新实现期望的功能,并从进口上二在标准库

回答

2
  1. 别处字符串查找ct在Python中非常便宜,但如果需要,可以将它们缓存在结构中。

  2. 通常没有这样做的规定,因为这些库是通过Python而不是C来访问的。它仍然可以生成自己的头匹配C模块中的定义,但他们需要按照Python版本进行维护。

  3. 这个没有好的答案。它归结为“快速”与“足够快”。

+1

2,大多数私有函数都是静态的,所以头文件本身不起作用。连接器会抱怨。如果它们没有导出,那么无论如何它们都不能在扩展模块中工作。 – yak 2012-04-14 10:13:45

+0

...我还会补充说明,这两个提问者引用的示例模块都是以某种方式在C中提供的结构和算法的高级重新实现。我自己不是C黑客,但我每天都用C++编程 - 我已经使用了例如C++。 C++ STL的'std :: deque'和'std :: mutex'(分别是'collections.deque'和'threading.Condition'的粗略模拟)通过cpython API;你可能想要沿着这些路线探索本地的替代品。 – fish2000 2016-10-03 19:26:55