5 ms·
What's wrong with http://pyrasite.com/ http://pyrasite.com/ ?
by kngl 12y ago
What's wrong with http://pyrasite.com/ http://pyrasite.com/ ?
- tehmillhouse 12y agoDepending on what state cpython is in when you inject, pyrasite may deadlock or segfault the interpreter. All it does is try to get the GIL and then inject the code. Pyringe first gets to a safe place before injecting by (essentially) faking the delivery of a signal, then waiting for python-level signal handler dispatch to trigger. By doing so, it ensures the interpreter first gets itself into a state in which it can execute arbitrary python code before performing the injection. Pyrasite has a bunch of features pyringe doesn't, though.
- kngl 12y agoUsing a signal may also have side effects on your program.
- tehmillhouse 12y agoIt doesn't really send a signal to your program. It just sets flags inside cpython to make it think so. (pendingbusy and pendingcalls_to_do, to be precise)
- rpearl 12y agowhy not just contribute to pyrasite to have this different method of injection instead of building out a new project? what is the tradeoff here?