Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #86318 > unrolled thread
| Started by | Fabio Zadrozny <fabiofz@gmail.com> |
|---|---|
| First post | 2015-02-24 10:23 -0300 |
| Last post | 2015-02-24 10:23 -0300 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.python
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: Design thought for callbacks Fabio Zadrozny <fabiofz@gmail.com> - 2015-02-24 10:23 -0300
| From | Fabio Zadrozny <fabiofz@gmail.com> |
|---|---|
| Date | 2015-02-24 10:23 -0300 |
| Subject | Re: Design thought for callbacks |
| Message-ID | <mailman.19128.1424785683.18130.python-list@python.org> |
[Multipart message — attachments visible in raw view] — view raw
Hi Cem, I didn't read the whole long thread, but I thought I'd point you to what I'm using in PyVmMonitor (http://www.pyvmmonitor.com/) -- which may already cover your use-case. Take a look at the callback.py at https://github.com/fabioz/pyvmmonitor-core/blob/master/pyvmmonitor_core/callback.py And its related test (where you can see how to use it): https://github.com/fabioz/pyvmmonitor-core/blob/master/_pyvmmonitor_core_tests/test_callback.py (note that it falls back to a strong reference on simple functions -- i.e.: usually top-level methods or methods created inside a scope -- but otherwise uses weak references). Best Regards, Fabio On Sat, Feb 21, 2015 at 12:44 AM, Cem Karan <cfkaran2@gmail.com> wrote: > Hi all, I'm working on a project that will involve the use of callbacks, > and I want to bounce an idea I had off of everyone to make sure I'm not > developing a bad idea. Note that this is for python 3.4 code; I don't need > to worry about any version of python earlier than that. > > In order to inform users that certain bits of state have changed, I > require them to register a callback with my code. The problem is that when > I store these callbacks, it naturally creates a strong reference to the > objects, which means that if they are deleted without unregistering > themselves first, my code will keep the callbacks alive. Since this could > lead to really weird and nasty situations, I would like to store all the > callbacks in a WeakSet ( > https://docs.python.org/3/library/weakref.html#weakref.WeakSet). That > way, my code isn't the reason why the objects are kept alive, and if they > are no longer alive, they are automatically removed from the WeakSet, > preventing me from accidentally calling them when they are dead. My > question is simple; is this a good design? If not, why not? Are there any > potential 'gotchas' I should be worried about? > > Thanks, > Cem Karan > -- > https://mail.python.org/mailman/listinfo/python-list >
Back to top | Article view | comp.lang.python
csiph-web