我希望我的所有线程同时启动,但在我的代码中,它会等待前一个线程完成它的进程,然后再启动一个新线程。我希望所有线程并行启动。
我的代码:
class Main(object):
start = True
config = True
givenName = True
def obscure(self, i):
i = i
while self.start:
Config.userInfo(i)
break
while self.config:
Config.open()
break
while self.givenName:
Browser.openSession()
break
Main = Main()
while __name__=='__main__':
Config.userInfo()
Config.open()
for i in range(len(Config.names)):
Task = Thread(target=Main.obscure(i))
Task.start()
break
最佳答案
这一行是主要问题:
Task = Thread(target=Main.obscure(i))
target
传递调用 Main.obscure(i)
的结果,不是要成为的函数在线程中运行。您当前正在主线程中运行该函数,然后基本上传递 target=None
。
你想要:
Task = Thread(target=Main.obscure, args=(i,))
然后,Thread
将安排在线程内使用列出的参数调用 Main.obscure
。
此外,Main = Main()
用 Main 的实例覆盖了 class Main
声明...但是您将永远无法创建另一个实例,因为您失去了对类(class)的引用。使用其他名称,例如 main = Main()
。
关于Python 线程 - 让线程开始而不等待前一个线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481132/