我正在使用python多处理/池模块来比较函数的程序运行时间,该函数检查数字是否为素数。我可以让主要功能单独工作,但似乎无法合并两者,所以他们一起工作。池功能如下:
import math import time
import multiprocessing from multiprocessing import Pool
def pool_process(f,data,pool_size):
tp1 = time.time()
pool = Pool(processes = pool_size)
result = pool.map(f, data)
pool.close()
pool.join()
#enter code here
print("Results", result)
print("Overall Time:", (time.time()-tp1))
我用来检查数字是否为素数的函数如下:
def check_prime(num):
t1 = time.time()
res = False
if num > 0:
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
print("Time:", (time.time()-t1))
break
else:
print(num,"is a prime number")
print("Time:", time.time()-t1)
res = True
return res
然后我调用了pool_process函数
data = 15488801
pool_process(check_prime, data, 1)
我收到以下错误:
'int' object is not iterable
答案 0 :(得分:0)
data
需要是一个列表。
变量data
作为第二个参数输入pool_process
。
data = [15488801]
pool_process(check_prime, data, 1)
在那里,它被赋予Pool.map
作为迭代的参数。
def pool_process(f,data,pool_size):
# ...
result = pool.map(f, data)
在将整数放入列表(并更正import
语句)后,代码在我的机器上运行正常。