Python multiprocessing : TypeError: 'Queue' object is not iterable

Python multiprocessing : TypeError: 'Queue' object is not iterable

我正在做一个简单的 python 应用程序,使用多进程和进程之间的 Queue。昨天我设法使它正常工作;然而,没有改变任何东西,今天早上它不起作用,这让我很震惊。

我的 main.py 看起来像这样:

if __name__ == '__main__':
    processes = []
    data_queue = Queue()
    
    processes.append(mp.Process(target=discord_commands))
    processes.append(mp.Process(target=create_shop_list,args=(data_queue)))
    processes.append(mp.Process(target=run,args=(data_queue)))

    for process in processes:
        process.start()
    for process in processes:
        process.join()

错误是:

Traceback (most recent call last):
  File "D:\aa_projet\erozia bot\eroziabot\Discord Erozia Bot\main.py", line 16, in <module>
    processes.append(mp.Process(target=create_shop_list,args=(data_queue)))
  File "C:\Users\barth\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 91, in __init__
    self._args = tuple(args)
TypeError: 'Queue' object is not iterable

但是我不会以任何方式迭代队列。在目标“运行”上,只有一个queue.put(<some-json-data>).create_shop_list 上,我简单地使用了一个 queue.get() 如下:

if not data_queue.empty():
    data = data_queue.get()

你有什么解决办法吗?

根据我的观察,您需要更正 args=(data_queue,) 这一行

if __name__ == '__main__':
processes = []
data_queue = Queue()

processes.append(mp.Process(target=discord_commands))
processes.append(mp.Process(target=create_shop_list,args=(data_queue, )))
processes.append(mp.Process(target=run,args=(data_queue, )))

for process in processes:
    process.start()
for process in processes:
    process.join()