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()
我正在做一个简单的 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()