_tracemalloc.c.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /*[clinic input]
  2. preserve
  3. [clinic start generated code]*/
  4. #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
  5. # include "pycore_gc.h" // PyGC_Head
  6. # include "pycore_runtime.h" // _Py_ID()
  7. #endif
  8. PyDoc_STRVAR(_tracemalloc_is_tracing__doc__,
  9. "is_tracing($module, /)\n"
  10. "--\n"
  11. "\n"
  12. "Return True if the tracemalloc module is tracing Python memory allocations.");
  13. #define _TRACEMALLOC_IS_TRACING_METHODDEF \
  14. {"is_tracing", (PyCFunction)_tracemalloc_is_tracing, METH_NOARGS, _tracemalloc_is_tracing__doc__},
  15. static PyObject *
  16. _tracemalloc_is_tracing_impl(PyObject *module);
  17. static PyObject *
  18. _tracemalloc_is_tracing(PyObject *module, PyObject *Py_UNUSED(ignored))
  19. {
  20. return _tracemalloc_is_tracing_impl(module);
  21. }
  22. PyDoc_STRVAR(_tracemalloc_clear_traces__doc__,
  23. "clear_traces($module, /)\n"
  24. "--\n"
  25. "\n"
  26. "Clear traces of memory blocks allocated by Python.");
  27. #define _TRACEMALLOC_CLEAR_TRACES_METHODDEF \
  28. {"clear_traces", (PyCFunction)_tracemalloc_clear_traces, METH_NOARGS, _tracemalloc_clear_traces__doc__},
  29. static PyObject *
  30. _tracemalloc_clear_traces_impl(PyObject *module);
  31. static PyObject *
  32. _tracemalloc_clear_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
  33. {
  34. return _tracemalloc_clear_traces_impl(module);
  35. }
  36. PyDoc_STRVAR(_tracemalloc__get_traces__doc__,
  37. "_get_traces($module, /)\n"
  38. "--\n"
  39. "\n"
  40. "Get traces of all memory blocks allocated by Python.\n"
  41. "\n"
  42. "Return a list of (size: int, traceback: tuple) tuples.\n"
  43. "traceback is a tuple of (filename: str, lineno: int) tuples.\n"
  44. "\n"
  45. "Return an empty list if the tracemalloc module is disabled.");
  46. #define _TRACEMALLOC__GET_TRACES_METHODDEF \
  47. {"_get_traces", (PyCFunction)_tracemalloc__get_traces, METH_NOARGS, _tracemalloc__get_traces__doc__},
  48. static PyObject *
  49. _tracemalloc__get_traces_impl(PyObject *module);
  50. static PyObject *
  51. _tracemalloc__get_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
  52. {
  53. return _tracemalloc__get_traces_impl(module);
  54. }
  55. PyDoc_STRVAR(_tracemalloc__get_object_traceback__doc__,
  56. "_get_object_traceback($module, obj, /)\n"
  57. "--\n"
  58. "\n"
  59. "Get the traceback where the Python object obj was allocated.\n"
  60. "\n"
  61. "Return a tuple of (filename: str, lineno: int) tuples.\n"
  62. "Return None if the tracemalloc module is disabled or did not\n"
  63. "trace the allocation of the object.");
  64. #define _TRACEMALLOC__GET_OBJECT_TRACEBACK_METHODDEF \
  65. {"_get_object_traceback", (PyCFunction)_tracemalloc__get_object_traceback, METH_O, _tracemalloc__get_object_traceback__doc__},
  66. PyDoc_STRVAR(_tracemalloc_start__doc__,
  67. "start($module, nframe=1, /)\n"
  68. "--\n"
  69. "\n"
  70. "Start tracing Python memory allocations.\n"
  71. "\n"
  72. "Also set the maximum number of frames stored in the traceback of a\n"
  73. "trace to nframe.");
  74. #define _TRACEMALLOC_START_METHODDEF \
  75. {"start", _PyCFunction_CAST(_tracemalloc_start), METH_FASTCALL, _tracemalloc_start__doc__},
  76. static PyObject *
  77. _tracemalloc_start_impl(PyObject *module, int nframe);
  78. static PyObject *
  79. _tracemalloc_start(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
  80. {
  81. PyObject *return_value = NULL;
  82. int nframe = 1;
  83. if (!_PyArg_CheckPositional("start", nargs, 0, 1)) {
  84. goto exit;
  85. }
  86. if (nargs < 1) {
  87. goto skip_optional;
  88. }
  89. nframe = _PyLong_AsInt(args[0]);
  90. if (nframe == -1 && PyErr_Occurred()) {
  91. goto exit;
  92. }
  93. skip_optional:
  94. return_value = _tracemalloc_start_impl(module, nframe);
  95. exit:
  96. return return_value;
  97. }
  98. PyDoc_STRVAR(_tracemalloc_stop__doc__,
  99. "stop($module, /)\n"
  100. "--\n"
  101. "\n"
  102. "Stop tracing Python memory allocations.\n"
  103. "\n"
  104. "Also clear traces of memory blocks allocated by Python.");
  105. #define _TRACEMALLOC_STOP_METHODDEF \
  106. {"stop", (PyCFunction)_tracemalloc_stop, METH_NOARGS, _tracemalloc_stop__doc__},
  107. static PyObject *
  108. _tracemalloc_stop_impl(PyObject *module);
  109. static PyObject *
  110. _tracemalloc_stop(PyObject *module, PyObject *Py_UNUSED(ignored))
  111. {
  112. return _tracemalloc_stop_impl(module);
  113. }
  114. PyDoc_STRVAR(_tracemalloc_get_traceback_limit__doc__,
  115. "get_traceback_limit($module, /)\n"
  116. "--\n"
  117. "\n"
  118. "Get the maximum number of frames stored in the traceback of a trace.\n"
  119. "\n"
  120. "By default, a trace of an allocated memory block only stores\n"
  121. "the most recent frame: the limit is 1.");
  122. #define _TRACEMALLOC_GET_TRACEBACK_LIMIT_METHODDEF \
  123. {"get_traceback_limit", (PyCFunction)_tracemalloc_get_traceback_limit, METH_NOARGS, _tracemalloc_get_traceback_limit__doc__},
  124. static PyObject *
  125. _tracemalloc_get_traceback_limit_impl(PyObject *module);
  126. static PyObject *
  127. _tracemalloc_get_traceback_limit(PyObject *module, PyObject *Py_UNUSED(ignored))
  128. {
  129. return _tracemalloc_get_traceback_limit_impl(module);
  130. }
  131. PyDoc_STRVAR(_tracemalloc_get_tracemalloc_memory__doc__,
  132. "get_tracemalloc_memory($module, /)\n"
  133. "--\n"
  134. "\n"
  135. "Get the memory usage in bytes of the tracemalloc module.\n"
  136. "\n"
  137. "This memory is used internally to trace memory allocations.");
  138. #define _TRACEMALLOC_GET_TRACEMALLOC_MEMORY_METHODDEF \
  139. {"get_tracemalloc_memory", (PyCFunction)_tracemalloc_get_tracemalloc_memory, METH_NOARGS, _tracemalloc_get_tracemalloc_memory__doc__},
  140. static PyObject *
  141. _tracemalloc_get_tracemalloc_memory_impl(PyObject *module);
  142. static PyObject *
  143. _tracemalloc_get_tracemalloc_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
  144. {
  145. return _tracemalloc_get_tracemalloc_memory_impl(module);
  146. }
  147. PyDoc_STRVAR(_tracemalloc_get_traced_memory__doc__,
  148. "get_traced_memory($module, /)\n"
  149. "--\n"
  150. "\n"
  151. "Get the current size and peak size of memory blocks traced by tracemalloc.\n"
  152. "\n"
  153. "Returns a tuple: (current: int, peak: int).");
  154. #define _TRACEMALLOC_GET_TRACED_MEMORY_METHODDEF \
  155. {"get_traced_memory", (PyCFunction)_tracemalloc_get_traced_memory, METH_NOARGS, _tracemalloc_get_traced_memory__doc__},
  156. static PyObject *
  157. _tracemalloc_get_traced_memory_impl(PyObject *module);
  158. static PyObject *
  159. _tracemalloc_get_traced_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
  160. {
  161. return _tracemalloc_get_traced_memory_impl(module);
  162. }
  163. PyDoc_STRVAR(_tracemalloc_reset_peak__doc__,
  164. "reset_peak($module, /)\n"
  165. "--\n"
  166. "\n"
  167. "Set the peak size of memory blocks traced by tracemalloc to the current size.\n"
  168. "\n"
  169. "Do nothing if the tracemalloc module is not tracing memory allocations.");
  170. #define _TRACEMALLOC_RESET_PEAK_METHODDEF \
  171. {"reset_peak", (PyCFunction)_tracemalloc_reset_peak, METH_NOARGS, _tracemalloc_reset_peak__doc__},
  172. static PyObject *
  173. _tracemalloc_reset_peak_impl(PyObject *module);
  174. static PyObject *
  175. _tracemalloc_reset_peak(PyObject *module, PyObject *Py_UNUSED(ignored))
  176. {
  177. return _tracemalloc_reset_peak_impl(module);
  178. }
  179. /*[clinic end generated code: output=44e3f8553aae2535 input=a9049054013a1b77]*/