0

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()

これは見事に機能しますが、2番目のスレッドを開始しようとすると、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()

他の人はこのコードを実行するのに問題がないようですので、私はPython2.6.332ビットを搭載したWindows7x64 Proを使用していることを付け加えておきます(それが重要な場合)。

4

4 に答える 4

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

ファイルを UTF-8 として宣言していますか?---------------------------------------- -------------^

于 2009-10-20T16:16:39.487 に答える
1

発生した正確なエラーを投稿できますか?

é私にとっては問題なく実行されます(文字をに置き換えた後e):

In thread
args areIn thread
asdfargs are  jkle1234
 3763763e

あなたが投稿した元のスクリプトを残し、ファイルを Windows で BOM 付きの UTF-8 として保存すると、次のようになります。

In thread
args areIn thread
asdfargs are  jkle1234
 3763763é

投稿したコードを ASCII として保存すると、SyntaxError が発生します。

SyntaxError: ファイル 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) Copyright 1985-2001 Microsoft Corp.

于 2009-10-20T16:20:37.717 に答える
0

コメントで述べたように、問題は私のコードではなく IDLE 自体にあると思います。とにかく助けてくれてありがとう!

私はあなたの答えに賛成票を投じましたが、この問題に対する本当の解決策がないため、私のものを受け入れます。

于 2009-11-06T21:00:01.567 に答える
0

おそらく、あるディレクトリの下に「threading」や「Thread」などの同じファイル名またはプロジェクト名があり、この起動以降に一度実行したことが原因である可能性があります。

于 2010-08-12T09:24:33.507 に答える