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 回答