{'fraction_non_alphanumeric': 0.019855595667870037, 'fraction_numerical': 0.0, 'mean_word_length': 4.898936170212766, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Multiprocessing the Sieve of Eratosthenes

More than two thousand years ago, Eratosthenes of Cyrene described a procedure for finding all prime numbers in a given range. This straightforward algorithm, known as the Sieve of Eratosthenes, is to this day the only procedure for finding prime numbers. In recent years it has been of interest to computer scientists and engineers because it serves as a convenient benchmark against which to measure some aspects of a computer's performance. Specifically, the Sieve tests the power of a machine (or of a compiler) to access a very large array in memory rapidly and repeatedly. This power is clearly influenced by memory access time, the speed at which indexing is done, and the overhead of looping. The parallel version of the Sieve is very useful as a test of some of the capabilities of a parallel machine. The parallel algorithm is straightforward, and so is the process for checking the final results. However, the efficient implementation of the algorithm on a real parallel machine, especially in the dynamic load-balancing case, requires thoughtful design.