Python & Go

Terry Reedy tjreedy at udel.edu
Mon Nov 16 10:00:59 CET 2009


Simon Forman wrote:
> On Sat, Nov 14, 2009 at 5:10 PM, Terry Reedy <tjreedy at udel.edu> wrote:
>> Paul Rubin wrote:
>>
>>> Mark Chu-Carroll has a new post about Go:
>>>
>>>
>>>  http://scienceblogs.com/goodmath/2009/11/the_go_i_forgot_concurrency_an.php
>> In a couple of minutes, I wrote his toy prime filter example in Python,
>> mostly from the text rather than the code, which I can barely stand to read.
>> It ran the first time without error.
>>
>> def plurals():
>>  i = 2
>>  while True:
>>    yield i
>>    i += 1
>>
>> def primefilter(src, prime):
>>  for i in src:
>>    if i % prime:
>>      yield i
>>
>> src = plurals()
>> while True:
>>  i = next(src)
>>  print(i)
>>  src = primefilter(src, i)
>>
>> As I commented there
>> "It stopped at 7877 when it hit the default recursion limit of 1000, which
>> could easily be increased to get out-of-memory error instead.
>>
>> I think Google is making a blunder if it moves to another old-fashioned
>> language whose code is bloated with junky boilerplate that doubles the size.
>> It would be much better, for instance, to tweak Python, which it has had
>> great success with, to better run on multiple cores."
>>
>> Terry Jan Reedy
> 
> FWIW,
> 
> def plurals():
>  i = 3
>  while True:
>    yield i
>    i += 2

Of course, in fact, I thought of at the time

def plurals():
   i = 6
   while True:
     yield i-1
     yield i+1
     i += 6

5,7, 11,13, 17,19, 23,(25-first miss), 29,31, (35-2nd miss),37, 41,43, 
47,(49 erd)...Reduced the base cases by another 1/3. I *think* without 
measuring, that that compensates for the extra -1,+1. But I was 
implementing *Mark's* toy example, and first posted it on his blog, so I 
copied his naive version.

Even better, to avoid extra -1, +1

def plurals():
   yield 2
   yield 3
   i = 5
   while True:
     yield i
     i += 2
     yield i
     i += 4

Of course, testing with primes greater that square root(candidate) is 
wasteful, and recusion should be converted to iteration to avoid 
recursion limit.

Terry Jan Reedy




More information about the Python-list mailing list