2014-11-13 52 views
-1

我有看一些这方面的Python代码:线程不被再次创建在Python

from ltpd import * 
def thread_function(): 
    for i in range(5): 
     if activatewindow('Confirm New Extension'): 
      generatekeyevent('<left><space>') 
      break 
     time.sleep(1) 

def main(): 
    for i in range some_big_range: 
     thread = Thread(target = thread_function) 
     thread.start() 
     # Code that runs for really long time 

我期待一个新的线程在循环中每i创建。但是,该线程仅被创建一次。我需要为for循环的每次迭代新启动线程。谁能告诉我什么是错的,以及如何解决它?

+0

你'for'例如有语法错误所以它难以猜测,但假设它是像'范围(10)',它会启动10个线程。所以......你怎么知道更多的线程没有启动?每个线程最多运行5秒(假设“执行某些操作”)不会很长。 – tdelaney

+0

说“做某事”就是“打印”bla“'。我知道线程没有运行,因为“bla”没有被打印。 – TheRookierLearner

+1

也许是因为'some_condition'评估为'False'?请不要发布玩具代码,而是使用实际代码,并创建一个[MCVE](http://stackoverflow.com/help/mcve)。 –

回答

1

每次迭代一个新的线程是startet:

>>> from threading import Thread 
>>> def fun(cnt): 
...  print cnt 
... 
>>> for i in range(5): 
...  thread = Thread(target=fun, args=(i,)) 
...  thread.start() 
... 
0 
1 
2 
3 
>>> 4