我正试图让一个遗传算法使用多重处理并行运行候选程序。所以我做了一个这样的代码
import multiprocessing as mp
...
parents = []
queue = mp.Queue(maxsize=poolSize - 1)
processes = []
for _ in range(poolSize - 1):
processes.append(mp.Process(target=generate_parent, args=(queue,)))
for process in processes:
process.start()
for process in processes:
process.join()
for _ in range(poolSize - 1):
parents.append(queue.get())
出了点问题,我不知道是什么。当我尝试调试代码时,当它到达“process.start()”时,执行就停止了,就像它到达了“while True:continue”一样。当我尝试正常执行它时,也会发生同样的情况,代码在某个点上会死机,但不会停止进程或引发任何错误
我是多处理和一般并行性方面的新手,如果有人能帮助我,我会很高兴
整个代码如下: https://github.com/estevaopbs/Molpro_tools
这个具体问题在genetic.py第144行中。 (我知道代码中还有一些其他问题。我正在解决它,它们不应该影响这个特定问题。)
问题似乎就在这里(如果不是,它仍然是一个麻烦点):
如果
try
块中存在异常-一个未声明的变量,未知方法,除以0-则while True
将继续作为静默无限循环问题是,如果出现错误,代码不会采取任何纠正措施或停止,它只是静静地继续,并可能不断遇到相同的错误。我会删除
continue
,或者至少用一些错误消息、日志记录或者可能是一个只重试几次的计数器来增加它相关问题 更多 >
编程相关推荐