May-25-2019, 08:18 AM
the code run well in windows but it is leading to interface stuck(the whole system interface) under the ubuntu(16.04 and 18.04).
what's wrong?
thank you!
run.py
what's wrong?
thank you!
run.py
# #!/usr/bin/python3 # #-*-coding: UTF-8 -*- import tkinter from tkinter import filedialog as tkFiledialog import plotMagDynamic def plotMagDynamicLine(): plotMagDynamic.plotUsingMultiprocessing() if __name__ == '__main__': # plotMagDynamicLine() top=tkinter.Tk(className='plot') frm = tkinter.Frame(top) tkinter.Button(frm, text="plot",command =plotMagDynamicLine,width=20,height=2).pack(side=tkinter.LEFT) text=tkinter.Text(top,width=60,height=20) frm.pack(side=tkinter.TOP) top.mainloop()plotMagDynamic.py
# #!/usr/bin/python3 # #-*-coding: UTF-8 -*- import tkinter from tkinter import filedialog as tkFiledialog import os import pandas as pd import numpy as np import matplotlib.pyplot as plt import configparser import re import math import yaml#读取配置文件 import multiprocessing from multiprocessing import Pool as ProcessPool#多进程 def plotProcessing(name): t=[1,2,3] TM=[1,2,3] RE=[1,2,3] fig = plt.figure(num=1, figsize=(15, 8)) # 开启一个窗口,同时设置大小,分辨率 ax1 = fig.add_subplot(1,1,1) # 通过fig添加子图,参数:行数,列数,第几个。 ax1.plot(t, TM, label='TM') ax1.plot(t, RE, label='RE') ax1.hlines(0, 0, np.max(t), colors="r", linestyles="dashed") ax1.set_xlabel("Time [ps]") ax1.set_ylabel("Normalized Magnetization (m_z)") ax1.legend() # 显示图例 pngPath = "./plot_" + str(name) + ".png" if (os.path.exists(pngPath) == True): os.remove(pngPath) fig.savefig(pngPath) plt.close('all') print(pngPath) #多进程 def multi_wrapper(args): return plotProcessing(*args) def plotUsingMultiprocessing(): nameArr=[9,8,7] cpu_count=multiprocessing.cpu_count()#返回本计算机的cpu数量(包括超线程,一般是指核心,而非物理cpu个数) pool=0 if(cpu_count-2>0): pool = ProcessPool(processes = cpu_count-2) else: pool = ProcessPool(processes = 1) zip_args = list(zip(nameArr))#由于不给传入多个参数,现目前使用折中方法解决 results = pool.map(multi_wrapper, zip_args) pool.close() pool.join() print ("Sub-process(es) done.")