Velocity Reviews > Problem with Threads

Kwnstantinos Euaggelidis
Guest
Posts: n/a

 12-19-2012
I have this code for Prime Numbers and i want to do it with Threads.. Any idea.??

# prime numbers are only divisible by unity and themselves
# (1 is not considered a prime number by convention)
import time
def isprime(n):
if n == 2:
return 1
if n % 2 == 0:
return 0
max = n**0.5+1
i = 3
while i <= max:
if n % i == 0:
return 0
i+=2
return 1
print "Please give the maximum number"
endnum = input()
start = time.time()
for i in range(endnum):
if isprime(i) == 1:
print "Number %d is PRIME" % i
print "Elapsed Time: %s" % (time.time() - start)

Dave Angel
Guest
Posts: n/a

 12-19-2012
On 12/19/2012 12:11 PM, Kwnstantinos Euaggelidis wrote:
> I have this code for Prime Numbers and i want to do it with Threads.. Any idea.??

Why do you want to do it with threads? Is it to speed up the
processing? (Guessing that partly because of your printing "elapsed
time." Chances are running this code in multiple threads will be
substantially slower.

If you want speed, you could speed up the algorithm by a few orders of

On the other hand, you might be interested in deciding/discussing the
tradeoffs of implementing an arbitrary algorithm serially or in
parallel, using multiple threads, and/or multiple processes, and/or
multiple networked computers, and/or different possible languages.

So, if you give us some ideas about your goals, I'm sure many people
have ideas to share.

--

DaveA

Hans Mulder
Guest
Posts: n/a

 12-19-2012
On 19/12/12 18:11:37, Kwnstantinos Euaggelidis wrote:
> I have this code for Prime Numbers and i want to do it with Threads..
> Any idea.??

Why would you want to do that?

It's not going to be any faster, since your code is CPU-bound.
You may have several CPUs, but CPython is going to use only one of them.

If you want to make it faster, read
http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

> # prime numbers are only divisible by unity and themselves
> # (1 is not considered a prime number by convention)
> import time
> def isprime(n):
> if n == 2:
> return 1
> if n % 2 == 0:
> return 0
> max = n**0.5+1
> i = 3
> while i <= max:
> if n % i == 0:
> return 0
> i+=2
> return 1
> print "Please give the maximum number"
> endnum = input()
> start = time.time()
> for i in range(endnum):
> if isprime(i) == 1:
> print "Number %d is PRIME" % i
> print "Elapsed Time: %s" % (time.time() - start)

Hope this helps,

-- HansM