【发布时间】:2017-09-13 07:46:54
【问题描述】:
我有一个用于 3 个项目的 for 循环。在for 循环内,我为每个项目生成 15 个线程。这些都将数据返回到我的 GUI,但发生的是 for 循环执行,所有 3 个项目都运行完毕,并产生了 45 个线程。我正在尝试运行第一项,等到 15 个线程完成,然后运行第二项。我需要在不使用join() 的情况下完成所有这些操作。
我认为这可以通过queue 完成,但在阻止时遇到了麻烦。当我尝试以下操作时,它永远不会移动到第二组 15 个线程:
while True:
try:
data = q.get(False)
except Query.Empty():
data = None
这停止了阻塞问题,并使用 15 个线程中的每一个线程中执行的函数不断更新我的 GUI,但是一旦它们执行,它就会简单地结束并且不会继续 for 循环。这是有问题的循环:
def thing_1(names):
def thready():
print "Hello!"
q.put("Done")
for name in names:
print "Working on " + name
t1 = threading.Thread(target=thready)
t1.start()
# Then put 'while True' here
【问题讨论】:
标签: python multithreading python-2.7 queue