Sfoglia il codice sorgente

speedup: _console Main.loop() artnet.next, dmx-fine

micha 1 anno fa
parent
commit
0473d78f72
1 ha cambiato i file con 66 aggiunte e 38 eliminazioni
  1. 66 38
      _console.py

+ 66 - 38
_console.py

@@ -660,6 +660,8 @@ class DMXCH(object):
         return out
     def _next(self,clock=0):
         value = self._base_value
+        #self._last_val = value
+        #return value
         #if self._dmx == 1024:
         #    print(self)
         
@@ -875,7 +877,10 @@ class Main():
 
         fps_start = time.time()
         fps = 0
+        dbg= 0#1
         while 1:
+            start = time.time()
+            _t=0
             self.lock.acquire_lock()
             t = clock.time()
             ii = 0
@@ -884,19 +889,29 @@ class Main():
             for ii,dmxch in enumerate(Bdmx):
                 i = ii%512
                 univ = ii//512
-                if str(univ) not in self.artnet:
+                s_univ = str(univ)
+                if s_univ not in self.artnet:
                     print("add uiv",univ)
-                    self.artnet[str(univ)] = ANN.ArtNetNode(to="10.10.10.255",univ=univ)
+                    self.artnet[s_univ] = ANN.ArtNetNode(to="10.10.10.255",univ=univ)
                     #self.artnet[str(univ)].dmx[512-1] = 100+univ
 
-                if univ != old_univ:
-                    old_univ = univ
-                    #print("UNIV",ii/512)
-                    try:
-                        artnet.next()
-                    except:pass
-                    artnet = self.artnet[str(univ)]
-                    #artnet.dmx = xx
+                #if univ != old_univ:
+                #    old_univ = univ
+                #    #print("UNIV",ii/512)
+                #    try:
+                #        artnet.next()
+                #    except:pass
+                #    artnet = self.artnet[str(univ)]
+                #    #artnet.dmx = xx
+
+            #for k,artnet in self.artnet.items():
+            #    artnet.next()
+
+            if dbg:
+                end = time.time()
+                print(" t",_t,ii,round(end-start,4))
+            start = time.time()
+            _t+=1
 
             old_univ = -1
             xx = [0]*512
@@ -911,36 +926,42 @@ class Main():
 
                 
                 v = dmxch.next(t)
-                vv = vdmx.by_dmx(clock=i,dmx=ii+1)
-                try:
-                    v = v*vv # disable v-master
-                except Exception as e:
-                    cprint("Exception v*vv",[v,vv],e)
-                    continue
+                #vv = vdmx.by_dmx(clock=i,dmx=ii+1)
+                #try:
+                #    v = v*vv # disable v-master
+                #except Exception as e:
+                #    cprint("Exception v*vv",[v,vv],e)
+                #    continue
 
                 xx[i] = int(v)
 
+            if dbg:
+                end = time.time()
+                print(" t",_t,ii,round(end-start,4))
+            start = time.time()
+            _t+=1
+
             old_univ = -1
             xx = [0]*512
             for ii,dmxch in enumerate(Bdmx): #fine loop
-                i = ii%512
-                univ = ii//512
-
-                if univ != old_univ:
-                    artnet = self.artnet[str(univ)]
-                    xx = artnet.dmx# = xx
-                
-                v = dmxch.next(t)
-                vv = vdmx.by_dmx(clock=i,dmx=ii+1)
-                try:
-                    v = v*vv # disable v-master
-                except Exception as e:
-                    cprint("Exception v*vv",[v,vv],e)
-                    continue
-
-                #xx[i] = int(v)
                 dmx_fine =  dmxch._dmx_fine
                 if dmx_fine > 0:
+                    i = ii%512
+                    univ = ii//512
+
+                    if univ != old_univ:
+                        artnet = self.artnet[str(univ)]
+                        xx = artnet.dmx# = xx
+                    
+                    v = dmxch.next(t)
+                    vv = vdmx.by_dmx(clock=i,dmx=ii+1)
+                    try:
+                        v = v*vv # disable v-master
+                    except Exception as e:
+                        cprint("Exception v*vv",[v,vv],e)
+                        continue
+
+                    #xx[i] = int(v)
                     vf = int(v%1*255)
                     #print(dmx_fine,end=" ")
                     dmx_fine = dmx_fine%512
@@ -959,24 +980,31 @@ class Main():
                             xx[dmx_fine-1] = int(v%1*255)
                     except Exception as e:
                         print("E dmx_fine",e,dmx_fine)
+            if dbg:
+                end = time.time()
+                print(" t",_t,ii,round(end-start,4))
+                print()
+            start = time.time()
+            _t+=1
 
 
-            try:    
-                artnet.next()
-            except:pass
             self.lock.release_lock()
+
+            for k,artnet in self.artnet.items():
+                artnet.next()
+
             #self.lock.acquire_lock()
             #time.sleep(1/35)
             fps += 1
             stop_fps = 50
-            time.sleep(1/60)
+            time.sleep(1/30)
             if fps >= stop_fps:
                 fps_t = time.time()
                 #print(int((fps_t-fps_start)*1000),"ms") 
                 print(round(stop_fps/(fps_t-fps_start),2),"core/fps") 
                 fps = 0
                 fps_start = time.time()
-                time.sleep(1/60)
+                #time.sleep(1/60)
 
 main = Main()
 if __run_main:
@@ -1270,7 +1298,7 @@ def JCB(data,sock=None): #json client input
     c = float(c)
     ftime = 0
     delay = 0
-
+    out = {}
     for cmds in jdatas:
         line = json.dumps(cmds)
         #md5 = hashlib.md5.hexdigest(line)