Compare commits
12 Commits
7f45076ad8
...
8c0b2ab251
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c0b2ab251 | ||
|
|
d2b6403ac1 | ||
|
|
008ea6473e | ||
|
|
8a6e901c85 | ||
|
|
2da8b40b93 | ||
|
|
de11d095cc | ||
|
|
cdbe30b3b5 | ||
|
|
be5d0049e6 | ||
|
|
d82f16e6cb | ||
|
|
21bb405f95 | ||
|
|
46d767278d | ||
|
|
e96e47fd2e |
@@ -42,6 +42,7 @@
|
||||
.. code-block:: python
|
||||
|
||||
from collections import namedtuple
|
||||
import csv
|
||||
with open('stock.csv') as f:
|
||||
f_csv = csv.reader(f)
|
||||
headings = next(f_csv)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
问题
|
||||
----------
|
||||
你有多个Python解释器进程在同时运行,你想将某个打开的文件描述符从一个解释器传递给另外一个。
|
||||
比如,假设有个服务器进程相应连接请求,但是实际的相应逻辑是在另一个解释器中执行的。
|
||||
比如,假设有个服务器进程相应连接请求,但是实际的响应逻辑是在另一个解释器中执行的。
|
||||
|
||||
----------
|
||||
解决方案
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
>>> a = array.array('d',[1,2,3])
|
||||
>>> a
|
||||
array('d', [1.0, 2.0, 3.0])
|
||||
>>> ptr_ = a.buffer_info()
|
||||
>>> ptr, _ = a.buffer_info()
|
||||
>>> ptr
|
||||
4298687200
|
||||
>>> ctypes.cast(ptr, ctypes.POINTER(ctypes.c_double))
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
::
|
||||
|
||||
>>> import array
|
||||
>>> from sample import *
|
||||
>>> avg(array.array('d',[1,2,3]))
|
||||
2.0
|
||||
>>> import numpy
|
||||
@@ -95,9 +96,9 @@
|
||||
通过编写能接受并操作数组的代码,你可以编写很好的兼容这些应用程序的自定义代码,
|
||||
而不是只能兼容你自己的代码。
|
||||
|
||||
代码的关键点在于 ``PyBuffer_GetBuffer()`` 函数。
|
||||
代码的关键点在于 ``PyObject_GetBuffer()`` 函数。
|
||||
给定一个任意的Python对象,它会试着去获取底层内存信息,它简单的抛出一个异常并返回-1.
|
||||
传给 ``PyBuffer_GetBuffer()`` 的特殊标志给出了所需的内存缓冲类型。
|
||||
传给 ``PyObject_GetBuffer()`` 的特殊标志给出了所需的内存缓冲类型。
|
||||
例如,``PyBUF_ANY_CONTIGUOUS`` 表示是一个连续的内存区域。
|
||||
|
||||
对于数组、字节字符串和其他类似对象而言,一个 ``Py_buffer`` 结构体包含了所有底层内存的信息。
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
def gcd(unsigned int x, unsigned int y):
|
||||
return csample.gcd(x,y)
|
||||
|
||||
对于简单的函数,你并不需要去做太多的时。
|
||||
对于简单的函数,你并不需要去做太多的事。
|
||||
Cython会生成包装代码来正确的转换参数和返回值。
|
||||
绑定到属性上的C数据类型是可选的。不过,如果你包含了它们,你可以另外做一些错误检查。
|
||||
例如,如果有人使用负数来调用这个函数,会抛出一个异常:
|
||||
|
||||
Reference in New Issue
Block a user