2009-10-20 3 views
0

Я пытаюсь добавить многопоточность в Python приложение, и, таким образом, начал с некоторыми игрушечными примерами:нереста более одного потока в Python вызывает RuntimeError

import threading 

def myfunc(arg1, arg2): 
    print 'In thread' 
    print 'args are', arg1, arg2 

thread = threading.Thread(target=myfunc, args=('asdf', 'jkle')) 

thread.start() 
thread.join() 

Это прекрасно работает, но как только я пытаюсь начать вторую нить, я получаю RuntimeError:

import threading 

def myfunc(arg1, arg2): 
    print 'In thread' 
    print 'args are', arg1, arg2 

thread = threading.Thread(target=myfunc, args=('asdf', 'jkle')) 
thread2 = threading.Thread(target=myfunc, args=('1234', '3763763é')) 

thread.start() 
thread2.start() 

thread.join() 
thread2.join() 

Как и другие, кажется, нет никаких проблем, работает этот код, позвольте мне добавить, что я нахожусь на Windows 7 x64 Pro с Python 2.6.3 32bits (если это имеет значение) ,

+0

Хм, я использую IDLE, основной редактор, который поставляется с python, для запуска этого. Кажется, что если я запустил его прямо из командной строки, проблем нет вообще ... – Wookai

ответ

0

Как сказано в комментариях, я думаю, что проблема исходит от самого IDLE, а не из моего кода. Спасибо за вашу помощь!

Я поддержал ваши ответы, но буду принимать мои, так как нет реального решения этой проблемы.

1
thread2 = threading.Thread(target=myfunc, args=('1234', '3763763é')) 

Вы объявляете файл как UTF-8? --------------------------------- --------------------^

+0

iso-8859-1, но это не проблема;) ... – Wookai

1

Можете ли вы высказать точную ошибку?

прекрасно работает для меня (после замены é символа с e):

In thread 
args areIn thread 
asdfargs are jkle1234 
3763763e 

Если я оставить оригинальный сценарий вы отправлен и сохраните файл как UTF-8 с BOM на Windows:

In thread 
args areIn thread 
asdfargs are jkle1234 
3763763é 

Сохранение код, перенесенных результатов ASCII в SyntaxError:

SyntaxError: Non-ASCII character '\xe9' in file threadtest.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

информация

Окружающая среда:

C:\python -V
Python 2.6.2
C:\cmd
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

+0

Проблема не в специальном символе. Ошибка, которую я получаю, представляет собой всплывающее сообщение «Runtime Error», возможно, из самого IDLE, а затем он сбой. – Wookai

+0

Есть ли какие-либо подробности RuntimeError? Мы не сможем решить вашу проблему, если вы сдержите информацию. –

+0

Прошу прощения, я не имею никакой информации. Единственное сообщение, которое я получаю, это это окно предупреждения из IDLE, в котором указано «Ошибка выполнения», и все. Я предполагаю, что проблема исходит из IDLE, так как тот же самый код, который запускается непосредственно из командной строки, отлично работает. – Wookai

0

Возможно, это связано с тем, что у вас есть то же имя файла или имя проекта, что и «threading» или «Thread» в каком-то каталоге, и вы запустили его один раз с этой загрузки.

Смежные вопросы