GIL in alternative implementations
Ethan Furman
ethan at stoneleaf.us
Tue Jun 7 13:51:00 EDT 2011
Carl Banks wrote:
> On Monday, June 6, 2011 9:03:55 PM UTC-7, Gabriel Genellina wrote:
>> En Sat, 28 May 2011 14:05:16 -0300, Steven D'Aprano
>> <steve+comp.... at pearwood.info> escribi�:
>>
>>> On Sat, 28 May 2011 09:39:08 -0700, John Nagle wrote:
>>>
>>>> Python allows patching code while the code is executing.
>>> Can you give an example of what you mean by this?
>>>
>>> If I have a function:
>>>
>>>
>>> def f(a, b):
>>> c = a + b
>>> d = c*3
>>> return "hello world"*d
>>>
>>>
>>> how would I patch this function while it is executing?
>> I think John Nagle was thinking about rebinding names:
>>
>>
>> def f(self, a, b):
>> while b>0:
>> b = g(b)
>> c = a + b
>> d = self.h(c*3)
>> return "hello world"*d
>>
>> both g and self.h may change its meaning from one iteration to the next,
>> so a complete name lookup is required at each iteration. This is very
>> useful sometimes, but affects performance a lot.
>
> It's main affect performance is that it prevents an optimizer from inlining a function call(which is a good chunk of the payoff you get in languages that can do that).
>
> I'm not sure where he gets the idea that this has any impact on concurrency, though.
What if f has two calls to self.h() [or some other function], and self.h
changes in between?
Surely that would be a major headache.
~Ethan~
More information about the Python-list
mailing list