from multiprocessing import Pool
from multiprocessing import cpu_count
import time
def son_do(flag):
for i in range(2):
time.sleep(1)
print 'son thread'
if flag == 5:
raise ValueError('sorry I am a selfexception')
def do(flag):
try:
son_do(flag=flag)
except Exception, e:
print e.args[0]
print e
return True
if __name__ == '__main__':
pool = Pool(processes=max(1, cpu_count() / 2))
results = []
for i in range(10):
print '%s thread ' % i
result = pool.apply_async(do, args=(i,))
results.append(result)
pool.close()
pool.join()
# for result in results:
# # this can block the main thread
# print result.get()
print 'main thread'
# do(5)