我编写了以下代码,以对服务器机群执行健康检查并返回无法访问的节点列表。
该程序每次执行都花费较长时间,并最终冻结(约6次),然后笔记本电脑重新启动。
笔记本电脑崩溃前执行未完成,也没有以^ c结尾。
笔记本电脑规格:MacBook Pro,32Gb RAM,16核。
import multiprocessing as mp
import subprocess
def health(hostnames):
with get_context("spawn").Pool(processes=mp.cpu_count()) as pool:
result = pool.map(ping, hostnames)
return [host for host in result if host[1] is False]
def ping(host):
command = ['ping', '-c', '1', host]
res = subprocess.Popen(command, stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
res.wait(2)
return host, res.returncode == 0
health(hostnames = [ ~250 servers ])
编程新手,是什么原因导致重新启动?