Простые потоки в Python 2.6 с помощью thread.start_new_thread ()

Object arr3[]=list1.toArray();
   String common[]=new String[arr3.length];

   for (int i=0;i<arr3.length;i++) 
   {
   common[i]=(String)arr3[i];
  }
13
задан 11 May 2009 в 19:32
поделиться

4 ответа

Вам нужно подождать, пока ваш поток завершит свою работу, поэтому вы должны использовать Thread.join ():

from threading import Thread

def myfunction(mystring,*args):
    print mystring

if __name__ == '__main__':

    try:
        t = Thread(None,myfunction,None,('MyStringHere',1))
        t.start()
        t.join()
    except Exception as errtxt:
        print errtxt
16
ответ дан 1 December 2019 в 18:55
поделиться

Проблема в том, что ваш основной поток завершился до того, как новый поток успеет закончить. Решение состоит в том, чтобы дождаться вашего основного потока.

import thread, time

def myfunction(mystring,*args):
    print mystring


if __name__ == '__main__':

    try:

        thread.start_new_thread(myfunction,('MyStringHere',1))

    except Exception, errtxt:
        print errtxt

    time.sleep(5)

В качестве примечания, вы, вероятно, захотите использовать модуль потоковой передачи. Ваш основной поток будет ждать закрытия всех этих типов потоков перед завершением:

from threading import Thread

def myfunction(mystring,*args):
    print mystring


if __name__ == '__main__':

    try:
        Thread(target=myfunction, args=('MyStringHere',1)).start()
    except Exception, errtxt:
        print errtxt
25
ответ дан 1 December 2019 в 18:55
поделиться

Когда я запускал этот код в Python 2.6, он работал, возможно ли, что у вас уже есть открытые потоки, которые заблокированы для функции? Я рекомендую полностью закрыть Python, проверить ваши запущенные процессы, чтобы убедиться, что ничего из ваших не запущено, и повторить попытку.

-1
ответ дан 1 December 2019 в 18:55
поделиться

Я пробовал это в Python 2.5 на Mac, после изменения

except Exception as errtxt:

на

except Exception, errtxt:

Программа не генерировала исключение, но и ничего не печатала. Не уверен, что это полезно, но мне кажется любопытным ...

-1
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: