Преглед изворни кода

Merge pull request #285 from starcraftman/thrd_join

Join a thread instead of sleeping
Jeremy Pallats/starcraft.man пре 10 година
родитељ
комит
eb29cc9b47
1 измењених фајлова са 12 додато и 1 уклоњено
  1. 12 1
      plug.vim

+ 12 - 1
plug.vim

@@ -1182,6 +1182,17 @@ class Command(object):
       self.proc = subprocess.Popen(self.cmd, cwd=self.cmd_dir, stdout=tfile,
                                    stderr=subprocess.STDOUT, shell=True,
                                    preexec_fn=os.setsid)
+      thrd = thr.Thread(target=(lambda proc: proc.wait()), args=(self.proc,))
+      thrd.start()
+
+      thread_not_started = True
+      while thread_not_started:
+        try:
+          thrd.join(0.1)
+          thread_not_started = False
+        except RuntimeError:
+          pass
+
       while self.alive:
         if G_STOP.is_set():
           raise KeyboardInterrupt
@@ -1196,7 +1207,7 @@ class Command(object):
         if time_diff > self.timeout:
           raise CmdTimedOut(['Timeout!'])
 
-        time.sleep(0.33)
+        thrd.join(0.5)
 
       tfile.seek(0)
       result = [line.decode('utf-8', 'replace').rstrip() for line in tfile]