我正在尝试以编程方式(使用Python)与我正在运行的jupyter内核进行交互,作为原型实验.
我在浏览器中运行了一个jupyter笔记本,我通过magic命令从笔记本中获取了连接信息
%connect_info
{
"signature_scheme": "hmac-sha256",
"shell_port": 49545,
"kernel_name": "",
"iopub_port": 49546,
"stdin_port": 49547,
"hb_port": 49549,
"control_port": 49548,
"key": "1a359267-f30d84302c39d352d6ac17c3",
"transport": "tcp",
"ip": "127.0.0.1"
}
Run Code Online (Sandbox Code Playgroud)
KernelClient类的jupyter_client文档让我相信我可以连接这个信息并用这个对象监听/显示代码,并发送代码通过我连接到的内核执行但是,我没有运气好我一直在尝试如下:
>>> from jupyter_client import KernelClient
>>> connection = {
"signature_scheme": "hmac-sha256",
"shell_port": 49545,
"kernel_name": "",
"iopub_port": 49546,
"stdin_port": 49547,
"hb_port": 49549,
"control_port": 49548,
"key": "1a359267-f30d84302c39d352d6ac17c3",
"transport": "tcp",
"ip": "127.0.0.1"
}
>>> client = KernelClient(**connection)
>>> client.history()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/path/to/envs/jupyter-nb/lib/python3.5/site-packages/jupyter_client/client.py", line 347, in …Run Code Online (Sandbox Code Playgroud) 我在使用MacOS High Sierra上的Python3.6 anaconda发行版处理传递给Python C API包装函数的int列表时遇到问题.我想将传入的int列表转换为我可以在C中使用的int数组.
这里有一个类似的问题使用Python/C API将Python列表传递给C函数,我可以开始工作,但处理一个int列表似乎是不同的.
这是我到目前为止所拥有的.
static PyObject * myModule_sumIt(PyObject *self, PyObject *args) {
PyObject *lst;
if(!PyArg_ParseTuple(args, "O", &lst)) {
Py_DECREF(lst);
return NULL;
}
int n = PyObject_Length(lst);
printf("\nLength of list passed in is %d\n", n);
int nums[n];
int sum = 0;
for (int i = 0; i < n; i++) {
PyLongObject *item = PyList_GetItem(lst, i);
sum += item;
printf("\ni = %d\titem = %d\tsum = %d\n", i, item, sum);
Py_DECREF(item);
}
Py_DECREF(lst); …Run Code Online (Sandbox Code Playgroud)