在Python中创建多个线程会导致运行时错误

0 投票
4 回答
527 浏览
提问于 2025-04-15 15:13

我正在尝试给一个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()

这个运行得很好,但一旦我尝试启动第二个线程,就会出现一个运行时错误:

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专业版,Python版本是32位的2.6.3(如果这有影响的话)。

4 个回答

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

你有把这个文件声明为UTF-8编码吗?-----------------------------------------------------^

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格式会导致一个语法错误:

语法错误:在文件threadtest.py的第8行发现非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.

0

正如评论中所说,我觉得问题出在IDLE这个工具上,而不是我的代码。无论如何,还是谢谢你的帮助!

我给你的回答点了赞,但我会选择接受我自己的答案,因为这个问题没有真正的解决办法。

撰写回答