Jim*_*tor 8 python multiprocessing kwargs
如何使用Python的多处理将字典传递给函数?文档:https://docs.python.org/3.4/library/multiprocessing.html#reference说传递字典,但我一直在
TypeError: fp() got multiple values for argument 'what'
Run Code Online (Sandbox Code Playgroud)
这是代码:
from multiprocessing import Pool, Process, Manager
def fp(name, numList=None, what='no'):
print ('hello %s %s'% (name, what))
numList.append(name+'44')
if __name__ == '__main__':
manager = Manager()
numList = manager.list()
for i in range(10):
keywords = {'what':'yes'}
p = Process(target=fp, args=('bob'+str(i)), kwargs={'what':'yes'})
p.start()
print("Start done")
p.join()
print("Join done")
print (numList)
Run Code Online (Sandbox Code Playgroud)
Kar*_*rin 14
当我运行你的代码时,我得到了一个不同的错误:
TypeError: fp() takes at most 3 arguments (5 given)
Run Code Online (Sandbox Code Playgroud)
我通过打印args和kwargs并将方法更改为调试,fp(*args, **kwargs)并注意到"bob_"作为一个字母数组传入.似乎用于的括号args是可操作的,而不是实际上给你一个元组.将它更改为列表,然后也numList作为关键字参数传入,使代码适合我.
from multiprocessing import Pool, Process, Manager
def fp(name, numList=None, what='no'):
print ('hello %s %s' % (name, what))
numList.append(name+'44')
if __name__ == '__main__':
manager = Manager()
numList = manager.list()
for i in range(10):
keywords = {'what': 'yes', 'numList': numList}
p = Process(target=fp, args=['bob'+str(i)], kwargs=keywords)
p.start()
print("Start done")
p.join()
print("Join done")
print (numList)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8741 次 |
| 最近记录: |