尝试在多处理过程中完成的方法中设置的值在完成后由“main”进程使用。
它目前给了我
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
是否有任何理由为什么示例脚本似乎能够设置其列表的值,但这不能?
答案 0 :(得分:2)
来自the multiprocessing.Process
documentation(强调补充):
“
args
是目标调用的元组参数。”
将您的multiprocessing.Process
实例化更改为下面显示的内容,所有实例都将按预期工作。
site_load_process = multiprocessing.Process(target=load_dat_site,
args=(d,)) # the comma is essential!
这里有一个独立的工作示例:http://ideone.com/VeTFYk
请记住,它是不制作元组的括号/ parens,它是逗号。
>>> not_a_tuple = (0)
>>> type(not_a_tuple)
<type 'int'>
>>> t = 0,
>>> type(t)
<type 'tuple'>