What does this mean?
My function gets two numpy arrays from a python/c library. After that function call I turn on the debugger to find a bug, so I add the line to look at the two numpy arrays.
import pdb; pdb.set_trace()
But for the values of one of the arrays
pdb
only returns the message *** Newest frame
PDB output:
(Pdb) type(d) <type 'numpy.ndarray'> (Pdb) type(f) <type 'numpy.ndarray'> (Pdb) f.shape (3, 3, 17856) (Pdb) d[0].shape *** Newest frame (Pdb) d[0] *** Newest frame
__array_interface__ A dictionary of items (3 required and 5 optional). The optional keys in the dictionary have implied defaults if they are not provided. The keys are: shape (required) Tuple whose elements are the array size in each dimension.
NumPy doesn't do this, so the challenge is to present the same interface as NumPy without explicitly using lazy evaluation.
pdb. set_trace (*, header=None) Enter the debugger at the calling stack frame. This is useful to hard-code a breakpoint at a given point in a program, even if the code is not otherwise being debugged (e.g. when an assertion fails). If given, header is printed to the console just before debugging begins.
Even for the delete operation, the Numpy array is faster. As the array size increase, Numpy gets around 30 times faster than Python List. Because the Numpy array is densely packed in memory due to its homogeneous type, it also frees the memory faster.
The command d
is the command for the debugger used to go down the stack to a 'newer frame'. It seems that the parsing cannot not handle this disambiguity.
Try renaming the variable d
.
EDIT: Actually, the comments suggest much better handling than renaming.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With