removeall() in list

castironpi at gmail.com castironpi at gmail.com
Fri Jan 11 19:17:06 EST 2008


On Jan 11, 5:51 pm, Paul Rubin <http://phr...@NOSPAM.invalid> wrote:
> castiro... at gmail.com writes:
> > listA.op( insert, x )
> > listA.op( remove, x )
>
> Sure, there are various ways you can make the code look uniform.  What
> gets messy is if you want to (say) operate on several lists at the
> same time, which means you need to hold multiple locks simultaneously,
> and some other thread is also trying to do the same thing.  If you
> acquire the locks in the wrong order, you can get a situation where
> both threads deadlock forever.
And:
> However, in reality, your rock and hard place are:
> listA.op( listA.insert, x )
> listA.op( listA.remove, x )
>
> or
>
> listA.op( 'insert', x )
> listA.op( 'remove', x )

For a standard library, you may not want to be exposing the potential
for deadlock-- not that users can't do that themselves.

lockerA.op( listA.extend, [ x ] )
lockerB.op( listB.reverse )
def thA():
    gui.listbox.append( lockerA.op( listA.pop ) )



More information about the Python-list mailing list