Python C Api Crashes On 'import Numpy' When Initilizing Multiple Times
Solution 1:
You can't just declare that all memory should be cleared/reset; Python isn't in control of all of it. Extension modules are actual shared object/DLL files, that can do literally anything a plain C program can do, and they're not required to register all of their actions in such a way that the core Python interpreter knows how to undo them on finalization. Python can't know that this part of the SO/DLL memory stores data that must be cleared, while that part is static data that should be left alone.
It's perfectly possible to run a script multiple times, but you don't do it by finalizing and reinitializing, you just actually run the script multiple times in a single initialization (and hope it's written in an idempotent fashion).
As an alternative, if you're on a UNIX-like box (read: anything but Windows), "resetting" can be done a different way, by exec
ing your program to restamp it with a fresh run. This resets more thoroughly than Python itself can, though even then it's not foolproof; e.g. if file descriptors aren't opened in O_CLOEXEC
mode, they'll stay open in the newly exec
-ed process.
Post a Comment for "Python C Api Crashes On 'import Numpy' When Initilizing Multiple Times"