在Python中生成多个线程会导致RuntimeError

时间:2009-10-20 16:13:53

标签: python multithreading runtime-error

我正在尝试将多线程添加到Python应用程序中,因此从一些玩具示例开始:

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 32位(如果这很重要)。

4 个答案:

答案 0 :(得分:1)

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

您是否将该文件声明为UTF-8?------------------------------------- ---------------- ^

答案 1 :(得分:1)

你能发布你得到的确切错误吗?

对我来说运行正常(将é字符替换为e后):

In thread
args areIn thread
asdfargs are  jkle1234
 3763763e

如果我保留您发布的原始脚本并将文件保存为带有BOM的UTF-8在Windows上:

In thread
args areIn thread
asdfargs are  jkle1234
 3763763é

将您发布的代码保存为ASCII会导致语法错误:

  

SyntaxError:第8行文件threadtest.py中的非ASCII字符'\ xe9',但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html

环境信息:

  

C:\ python -V
  Python 2.6.2
  C:\ CMD
  Microsoft Windows XP [版本5.1.2600]
  (C)版权所有1985-2001 Microsoft Corp.

答案 2 :(得分:0)

正如评论中所述,我认为问题来自IDLE本身,而不是来自我的代码。无论如何,谢谢你的帮助!

我赞成你的答案但会接受我的答案,因为这个问题没有真正的解决方案。

答案 3 :(得分:0)

也许是因为您在某个目录下拥有相同的文件名或项目名称,如“threading”或“Thread”,并且自启动以来您已经运行过一次。