【问题标题】:python *args **kwargs used in a quepython *args **kwargs 在 que 中使用
【发布时间】:2023-04-01 02:10:01
【问题描述】:

所以我在 python 中使用 *args **kwargs 功能已经有一段时间了,我遇到了一个问题,我似乎无法在 stackoverflow 的文档/此处找到解决方案。

我有一个多线程作业,它并行向服务器发送请求,然后对返回的 JSON 进行一些分析。我需要为每个请求-响应对写入一个 csv 文件。

因为这是并行完成的,所以在线程作业函数中写入 csv 会有问题。我想出的解决方案是将分析结果也放入一个que中,然后创建一个函数从que的分析中获取它并按顺序将其写入csv。

现在是真正的问题:
我必须写入 csv 的函数接受参数和关键字参数,但 que 不知道如何处理。

有没有办法将 *args **kwargs 放在一个队列中,然后一个接一个地获取它们并将它们传递给另一个函数?

我想要一些看起来像这样的东西:

csv_que = Queue() 

# put arguments to the que which will be written later  
def write_row_to_que(self,*args, **kwargs):
    csv_que.put(*args, **kwargs)

# send each argument in the que to the write_row function with the arguments 
#from the que
def csv_writer_func():
    while True:
        args, kwargs = csv_que.get()
        write_row(args, kwargs)

我不知道这是否是解决此问题的正确方法,但我很想听听一些想法以及此功能(将参数传递给 que,然后从中拉出)是否可行。

【问题讨论】:

    标签:
    python
    multithreading
    python-2.7
    keyword-argument