将正在运行的线程引用到python中的新线程类中

时间:2018-12-15 02:54:55

标签: python multithreading

看来这很好,但是我不停地思考在Python中使用多线程是正确的还是被认为是最佳实践,因为这看起来很简单(我没有在Python中进行并行编程的经验)并且当两个类变得更加复杂时,它可能会丢失某些东西或存在潜在的问题。我将不胜感激任何建议。谢谢!

class Runner1(threading.thread):
    def __init__(self): 
       threading.Thread.__init__(self)
       self.n = 0
    def run(self):
       while self.n < 100:
         time.sleep(10)
         self.n += 1


thread1 = Runner1()
thread1.start()

class Runner2(threading.thread):
    def __init__(self, runner): 
       threading.Thread.__init__(self)
       self.runner = runner
    def run(self):
       while True:
          print(self.runner.n)
          time.sleep(10)

thread2 = Runner2(thread1)
thread2.start()

1 个答案:

答案 0 :(得分:1)

Thread对象从一个线程传递到另一个线程是可以的。但是,n的{​​{1}}方法中Runner1的增量不是原子的,因此我建议在对run()的所有访问中加一个锁。 (尽管目前只有一个线程在修改它,但事情变得更加复杂的时候,除非对该变量进行保护,否则它将成为一个问题。)