Alternative to signals in threads

woooee at gmail.com woooee at gmail.com
Wed Mar 8 21:25:46 EST 2017


Use multiprocessing since you want to do multiple things at once https://pymotw.com/2/multiprocessing/basics.html  If I understand you correctly, once the string is found you would terminate the process, so you would have to signal the calling portion of the code using a Manager dictionary or list..  I am not that knowledgeable about multiprocessing, so this is probably the long way around the barn.
import time
from multiprocessing import Process, Manager


def test_f(test_d):
   ctr=0
   while True:
      ctr += 1
      print "test_f", test_d["QUIT"], ctr
      time.sleep(1.0)
      if ctr > 5:
         test_d["QUIT"]=True
  
if __name__ == '__main__':
   ## define the dictionary to be used to communicate
   manager = Manager()
   test_d = manager.dict()
   test_d["QUIT"] = False

   ## start the process
   p = Process(target=test_f, args=(test_d,))
   p.start()
   
   ## check the dictionary every half-second
   while not test_d["QUIT"]:
      time.sleep(0.5)
   p.terminate()


More information about the Python-list mailing list