脚本在PyCharm中运行,但不能作为Exe运行(多处理-池)

时间:2019-11-19 08:38:15

标签: python-3.x multithreading multiprocessing exe python-multiprocessing

我写了一个脚本,对矩阵进行了一些特定的重新填充和转换。在调试或运行时,它在PyCharm中都可以正常工作,但是将其作为exe(pyinstaller或auto-py-to-exe)打开会在中途出错。我想我可以将其归结为这一部分:

from multiprocessing import Pool, cpu_count

n_cpu = cpu_count() - np.round(int((1 - (drossel / 100)) * cpu_count()))
with Pool(processes=n_cpu) as loc_pool:   
    house_id_z_list = loc_pool.map(partial(worker_poly, grid_center_points=grid_center_points,
                                           grid_edge_points=grid_edge_points,type_build=type_build), house_list)

由于我要使用的输入数据非常大(400+ MB),因此我正在使用Pool从多处理过程并行进行计算。我认为错误发生在这里!我的程序有一个小的控制台用户界面,要求输入并显示计算进度。启动程序时,它会显示一些文本,并要求使用python input命令进行输入。现在,当上面的多处理命令启动时,控制台会一遍又一遍地以混合顺序溢出启动文本和输入命令。我想这里的Pool(s)再次运行了整个脚本,使程序崩溃了。但是我不知道该怎么做。我将典型的python脚本结构用于:

 import libraries 

 def_1():
      "do stuff"
 def_2():
      "do other stuff"

 if __name__ == "__main__":
      print('Hello User')
      task_id = input('Write Task ID: ')
      "Do task_id"

如何防止exe中出现此错误?又为什么它只出现在exe文件中而不出现在PyCharm中?我正在使用python 3.6。

0 个答案:

没有答案