Note that there are some explanatory texts on larger screens.

plurals
  1. POPython script freezes for no apparent reason (afaik)
    primarykey
    data
    text
    <p>i'm not particularly new at python but i just thought there might be a reason for this program not working properly. i have written a similar one from which this is derived, and that still works fine. it is a program to graph the average time of a set of ping responses, to see if there is any pattern in the time over the day. the source is as follows</p> <pre><code>from Tkinter import * import matplotlib import time import os, sys, threading, Queue matplotlib.use('TkAgg') from numpy import arange, array, sin, pi from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure import Tkinter import sys class App(object): def __init__(self): self.q = Queue.Queue() self.q2 = Queue.Queue() self.avvals=[] self.addlist=['bbc.co.uk', 'google.co.uk', 'nhgs.co.uk', 'bing.co.uk', 'msn.com'] self.addlistlen = len(self.addlist) self.root = Tkinter.Tk() self.root.wm_title("Connection Speed") self.frame = Tkinter.Frame(self.root) self.frame.pack(side='top', expand=1, fill='both',) self.frame2 = Tkinter.Frame(self.frame) self.frame2.pack(side='bottom', expand=1, fill='both',) self.f = Figure(figsize=(5,4), dpi=100) self.a = self.f.add_subplot(111) self.gframe = Tkinter.Frame(self.frame) self.gframe.pack(side='top', expand=1, fill='both',) self.canvas = FigureCanvasTkAgg(self.f, master=self.gframe) self.canvas.show() self.canvas.get_tk_widget().pack(side='top', fill='both', expand=1) self.canvas._tkcanvas.pack(side='top', fill='both', expand=1) self.lt = threading.Thread(target=self.loop()) def getping(self, add): pingaling = os.popen("ping -n 2 "+str(add).strip()) sys.stdout.flush() line = pingaling.read() if line: try: line = line.split('Maximum = ')[1] time = line.split('ms, Average')[0] self.q.put(int(time)) except: self.q.put(None) def gpthread(self, *a): t = threading.Thread(target=self.getping, args=a) t.isDaemon = True t.start() def loop(self): while 1: for x in self.addlist: self.gpthread(x) while self.q.qsize&lt;self.addlistlen: pass tl = [] for u in range(self.addlistlen): temp = self.q.get() if temp != None: tl.append(temp) if len(tl)&gt;0: self.update(sum(tl)/len(tl)) else: self.update(None) def update(self, val): self.a.clear() self.avvals.append(val) self.a.plot(self.avvals, linewidth=0.5, color = 'b') self.canvas.draw() a = App() try: a.root.mainloop() except: a.root.destroy() </code></pre> <p>i probably dont need the bottom try..except but i put it in to check if it would make a difference. i haven't had a chance to try it on another computer, but my other scripts are working fine so.... i simply can't comprehend why it freezes, stops responding, and if i exit it by any method i get a error saying Fatal python error: PyEval NULL tstate or somthing very similar. now it doesn't even expand! it just goes straight to not responding!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload