Problem with Threads

  • Thread starter Kwnstantinos Euaggelidis
  • Start date
K

Kwnstantinos Euaggelidis

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)
 
D

Dave Angel

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
magnitude. Ask for suggestions.

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.
 
H

Hans Mulder

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top