Compare commits

...

12 Commits

Author SHA1 Message Date
XiongNeng
8c0b2ab251 Merge pull request #367 from absop/patch-1
Update p11_pass_socket_file_descriptor_between_processes.rst
2023-07-02 00:15:02 +08:00
XiongNeng
d2b6403ac1 Merge pull request #360 from Ascotbe/master
Repair no import csv
2023-07-02 00:13:59 +08:00
XiongNeng
008ea6473e Merge pull request #362 from chyun/patch-1
ptr_ = a.buffer_info() 这一行错了, 少了一个ptr_之间少可以个,
2023-07-02 00:13:26 +08:00
XiongNeng
8a6e901c85 Merge pull request #363 from chyun/patch-2
PyBuffer_GetBuffer拼写错误应该是PyObject_GetBuffer && 示例代码中没有引入sample
2023-07-02 00:13:14 +08:00
叶芝秋
2da8b40b93 Update p11_pass_socket_file_descriptor_between_processes.rst
错别字修正:相应 -> 响应
2023-06-11 14:52:45 +08:00
Chyun
de11d095cc PyBuffer_GetBuffer拼写错误应该是PyObject_GetBuffer && 示例代码中没有引入sample
PyBuffer_GetBuffer拼写错误应该是PyObject_GetBuffer && 示例代码中没有引入sample
2022-12-01 20:26:31 +08:00
Chyun
cdbe30b3b5 ptr_ = a.buffer_info() 这一行错了, 少了一个ptr_之间少可以个,
ptr_ = a.buffer_info() 这一行错了, 少了一个ptr_之间少可以个,
2022-12-01 18:06:44 +08:00
Ascotbe
be5d0049e6 Repair no import csv 2022-09-21 10:42:31 +08:00
XiongNeng
d82f16e6cb Merge pull request #356 from yicone/patch-1
fix: 代码违背文字描述
2022-02-01 12:12:43 +08:00
XiongNeng
21bb405f95 Merge pull request #353 from pylemon/patch-1
Update p10_wrap_existing_c_code_with_cython.rst
2022-02-01 12:12:08 +08:00
yicone
46d767278d fix: 代码违背文字描述
文字描述:“另外,你可能还会问为什么 ``__init__()`` 方法中设置了 ``self.first_name`` 而不是 ``self._first_name`` 。”

参考:
https://github.com/yidao620c/python3-cookbook/blob/master/cookbook/c08/p06_managed_attribute.py#L12
2022-01-29 01:14:26 +08:00
Leeway
e96e47fd2e Update p10_wrap_existing_c_code_with_cython.rst
改一个错别字
2021-07-15 15:28:29 +08:00
5 changed files with 7 additions and 5 deletions

View File

@@ -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)

View File

@@ -6,7 +6,7 @@
问题
----------
你有多个Python解释器进程在同时运行你想将某个打开的文件描述符从一个解释器传递给另外一个。
比如,假设有个服务器进程相应连接请求,但是实际的应逻辑是在另一个解释器中执行的。
比如,假设有个服务器进程相应连接请求,但是实际的应逻辑是在另一个解释器中执行的。
----------
解决方案

View File

@@ -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))

View File

@@ -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`` 结构体包含了所有底层内存的信息。

View File

@@ -178,7 +178,7 @@
def gcd(unsigned int x, unsigned int y):
return csample.gcd(x,y)
对于简单的函数,你并不需要去做太多的
对于简单的函数,你并不需要去做太多的
Cython会生成包装代码来正确的转换参数和返回值。
绑定到属性上的C数据类型是可选的。不过如果你包含了它们你可以另外做一些错误检查。
例如,如果有人使用负数来调用这个函数,会抛出一个异常: