多处理不是线程!顾名思义,它使用不同的进程而不是线程。因此,使用全局变量是行不通的,因为它不是在进程之间共享的。在
使用列表理解通常是for循环的先决条件,因为它更快。考虑一下这一点In [1]: import math
In [2]: %cpaste
Pasting code; enter ' ' alone on the line to stop or use Ctrl-D.
:def prime_list(num):
: if num < 3:
: raise ValueError('this function only accepts arguments > 2')
: # For numbers >2, only odd numbers are prime.
: candidates = range(3, num+1, 2)
: # For an odd number c to be a prime, one must ensure that
: # c modulo all previous odd numbers (p) must be non-zero.
: L = [c for c in candidates if all(c % p != 0 for p in
: range(3, int(math.sqrt(c))+1, 2))]
: # 2 is also a prime number.
: return [2] + L
:
In [3]: %timeit prime_list(100000)
1 loops, best of 3: 610 ms per loop
In [4]: rv &#