我有一个R
代码,可以进行一些数据分析和返回TRUE/FALSE
.有时,输入数据太大而代码只是保持运行.
我想要一个监视我的数据分析代码的脚本,如果它没有返回任何内容600 seconds
,那么它会暂停正在运行的代码并执行其他操作.
这就像按下STOP
按钮一样R console
.
我知道stop
,break
,exit
,等,但因为代码将无法达到这些语句,因为它仍在运行,它的数据分析,这些循环不会是有用的.
当我遇到len函数的C实现时,我正在阅读有关python内置函数的实现的信息。
static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
{
Py_ssize_t res;
res = PyObject_Size(obj);
if (res < 0) {
assert(PyErr_Occurred());
return NULL;
}
return PyLong_FromSsize_t(res);
Run Code Online (Sandbox Code Playgroud)
我无法理解这段代码中发生了什么。我不知道C是如何工作的。有人可以解释这段代码在做什么吗?
我从https://github.com/python/cpython/blob/master/Python/bltinmodule.c获取了代码
编辑:我只是很好奇len函数是如此之快,在这段代码中绊倒了。我只想知道为什么使用函数PyObject_Size检查对象的大小为零,然后使用PyLong_FromSsize_t返回实际大小。