1

マルチプロセスプロセスで実行されるメソッドで設定される値を、終了後に「メイン」プロセスで使用しようとしています。

それは現在私に与えます

TypeError: 'str' object does not support item assignment
DID WE? ['']

次のコードを考えると、これは実際には私が望むものではありません:

def load_dat_site(d):
global seek_site
browser.execute_script("window.location = '"+seek_site+"';")
print "SITE LOADED"
d[0] = 'YEAH!'


manager = Manager()
d = manager.list([''])
site_load_process = multiprocessing.Process(target=load_dat_site, args=(d))
site_load_process.start()
site_load_process.join(15)
print "DID WE?", d

サンプル スクリプトがリストの値を設定できるように見えるのに、これができない理由はありますか?

4

1 に答える 1

2

ドキュメントから(強調を追加)multiprocessing.Process

"は、ターゲット呼び出しargsの引数タプルです。"

インスタンス化を以下に示すように変更multiprocessing.Processすると、すべてが期待どおりに機能します。

site_load_process = multiprocessing.Process(target=load_dat_site, 
                                            args=(d,)) # the comma is essential!

ここに自己完結型の実用的な例があります: http://ideone.com/VeTFYk


タプルを構成するのは括弧/括弧ではなく、コンマあることに注意してください。

>>> not_a_tuple = (0)
>>> type(not_a_tuple)
<type 'int'>

>>> t = 0,
>>> type(t)
<type 'tuple'>
于 2013-01-25T00:56:47.130 に答える