You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python multiprocessing库误将多字符股票代码拆分为多个参数

解决multiprocessing传递字符串参数被拆分的问题

错误原因

multiprocessing.Process的args参数要求传入可迭代的参数序列(通常是元组)。当直接传入字符串(如"GOOG")时,字符串会被Python视为字符的迭代器,每个字母都会被当作独立参数传递给目标函数nnfuncs.compare,这就导致了报错:compare() takes 1 positional argument but 4 were given——因为"GOOG"被拆成了4个字符参数。

解决方案

必须将单个字符串参数包装为单元素元组。注意Python的元组语法:单元素元组必须在元素后添加逗号,否则括号会被视为普通的表达式包裹,而非元组。

修正后的代码

import multiprocessing as mp

def main():
    for value in stocks:
        # 将字符串参数包装为单元素元组,注意末尾的逗号
        p = mp.Process(target=nnfuncs.compare, args=(value["symbol"],))
        p.start()
        nnstruct.processes.append(p) 
        
    for process in nnstruct.processes:
        process.join()

if __name__ == '__main__':
    main()

补充说明

如果需要传递多个参数,直接按顺序写成多元素元组即可,例如:

args=(param1, param2, param3)

单元素元组的逗号是关键语法细节,容易被忽略,这也是这类问题的常见诱因。

内容的提问来源于stack exchange,提问作者Caio Navarro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:09:20