def pool_process(f, data, pool_size):
tp1 = time.time()
pool = Pool(processes=pool_size)
result = pool.map(f, data)
pool.close()
pool.join()
print("Results", result)
print("Overall Time:", round((time.time()-tp1),2))
return round((time.time()-tp1),2)
def check_prime(num):
print(multiprocessing.current_process(), multiprocessing.current_process().pid)
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:", int(time.time()-t1))
break
else:
print(num,"is a prime number")
print("Time:", time.time()-t1)
res = True
return res
dataRange = range(10000)
pool_process(check_prime, dataRange, 6)
Я пытаюсь проверить эту многопроцессорность в python на ноутбуке Jupiter, программа фактически запустилась с нормальным выводом и просто застыла там через несколько секунд. Я думал, что код где-то застрял, поэтому я использовал ps -elf | grep PID, чтобы проверить состояние одного из процессов после начала выполнения, я получал S почти все время, а иногда и U, который я понятия не имею, что это значит. Тогда, если бы я использовал ps -elf | grep PID, чтобы проверить состояние процесса позже, не было никаких следов, и программа в записной книжке также не закончилась. Я гуглил что-то об этом методе карты и до сих пор не понимаю, что происходит. Цените это, если кто-нибудь может помочь с этим.