看来这很好,但是我不停地思考在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()
答案 0 :(得分:1)
将Thread
对象从一个线程传递到另一个线程是可以的。但是,n
的{{1}}方法中Runner1
的增量不是原子的,因此我建议在对run()
的所有访问中加一个锁。 (尽管目前只有一个线程在修改它,但事情变得更加复杂的时候,除非对该变量进行保护,否则它将成为一个问题。)