簡體   English   中英

Python 多處理:將 kwargs 轉發到 actor 函數

[英]Python multiprocessing: forwarding kwargs to actor function

注意: Python 多處理 - 如何將 kwargs 傳遞給函數? 不回答這個問題。

procs.append(Process(target=fn, args=(cmd, results), kwargs=**kwargs))

Pycharm 顯示了在** for kwargs=**kwargs expression expected語法錯誤expression expected

我應該如何在不擴展的情況下傳遞kwargs

我嘗試使用kwargs=kwargs如下

import multiprocessing
from multiprocessing import Process
import time


c = 0
def fn(a, res, **kwargs):
    print('sleeping: {}'.format(kwargs))
    time.sleep(10)
    global c
    c+=1
    res[a]=c
    print(res)

def test(**kwargs):
    cmds = ['1','2','3']
    procs = []
    manager = multiprocessing.Manager()
    results = manager.dict()
    for cmd in cmds:
        procs.append(Process(target=fn, args=(cmd, results), kwargs=kwargs))
        procs[-1].start()
    for proc in procs:
        proc.join()
    print(results)

if __name__ == '__main__':
    test(a=1, b=2)

但是得到了錯誤:

self._target(*self._args, **self._kwargs)
TypeError: fn() got multiple values for argument 'a'
Process Process-3:

您在kwargs有一個變量名稱a因此函數fna參數在kwargs cmd中都定義了。 嘗試將def fn(a, res, **kwargs):的參數a更改為另一個名稱或將test(a=1, b=2)更改a test(e=1, b=2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM