记录一下。
在Jupyter上运行线程concurrent.futures.ThreadPoolExecutor()没问题。
偏偏运行concurrent.futures.ProcessPoolExecutor() as executor:没反应,连报错信息都没有。
ProcessPoolExecutor 例子
import concurrent.futures import math PRIMES = [ 112272535095293, 112582705942171, 112272535095293, 115280095190773, 115797848077099, 1099726899285419] def is_prime(n): if n < 2: return False if n == 2: return True if n % 2 == 0: return False sqrt_n = int(math.floor(math.sqrt(n))) for i in range(3, sqrt_n + 1, 2): if n % i == 0: return False return True def main(): with concurrent.futures.ProcessPoolExecutor() as executor: for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)): print('%d is prime: %s' % (number, prime)) if __name__ == '__main__': main()
官方文档的案例扔进去执行都没结果。
想了半天,一度怀疑人生。然后突发奇想去Pycharm上运行,同样的代码,运行成功了。
可能Jupyter上有限制吧,Anyway,先这样。