if super().stopped(): print('Task was Cancelled') counter = -1 return counter if ints[i] + ints[j] + ints[k] == 0: counter += 1 print(f'Triple found:{ints[i]}, {ints[j]}, {ints[k]}', end='\n') print(f'ended count_three_sum. Triplets counter={counter}') return counter if __name__ == '__main__': print('started main') ints = read_ints('..\\data\\1Kints.txt') task = ThreeSumUnitOfWork(ints) task.start() time.sleep(10) task.stop() task.join() print(task.stopped()) print('ended main')
@measure_time def run_in_parallel(ints): t1 = threading.Thread(target=count_three_sum, daemon=True, args=(ints, 't1')) t2 = threading.Thread(target=count_three_sum, daemon=True, args=(ints, 't2')) t1.start() t2.start() t1.join() t2.join() @measure_time def run_sequentially(ints): count_three_sum(ints) count_three_sum(ints) if __name__ == "__main__": print("start") ints = read_ints("./ints/1Kints.txt") run_in_parallel(ints) run_sequentially(ints) print("Ended main")
daemon=True, args=(ints, 't1')) t2 = threading.Thread(target=count_three_sum, daemon=True, args=(ints, 't2')) t1.start() t2.start() print('\nGoing to wait for threads') t2.join() t2.join() @measure_time def run_in_sequentially(ints): count_three_sum(ints, 'main') count_three_sum(ints, 'main') if __name__ == '__main__': print('Started main') ints = read_ints('../data/2Kints.txt') run_in_parallel(ints) # Executed time is 271.11 seconds. run_in_sequentially(ints) # Executed time is 266.25 seconds. print('Ended main')
@measure_time def run_in_parallel(ints): t1 = threading.Thread(target=count_three_sum, daemon=True, args=(ints, 't1')) t2 = threading.Thread(target=count_three_sum, daemon=True, args=(ints, 't2')) t1.start() t2.start() print('\nGoing to wait for threads') t1.join() t2.join() @measure_time def run_sequentially(ints): count_three_sum(ints, 'main') count_three_sum(ints, 'main') if __name__ == '__main__': print('started main') ints = read_ints("..\\\data\\1Kints.txt") run_in_parallel(ints) run_sequentially(ints) print('ended main')
import concurrent.futures from multithreading.count_three_sum import count_three_sum, read_ints if __name__ == '__main__': print(f"started main") data = read_ints('./ints/1Kints.txt') with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor: results = executor.map(count_three_sum, (data, data), ('t1', 't2')) for r in results: print(f"{r=}") print('ended main')
import concurrent.futures from multithreading.count_three_sum import read_ints, count_three_sum if __name__ == '__main__': print('Started main') data = read_ints('../data/1Kints.txt') with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: results = executor.map(count_three_sum, (data, data), ('t1', 't2')) print('After map') for r in results: print(f'{r=}') print('After for') print('Ended main')