gpt4 book ai didi

python - 多处理 - 无法将列表写入 csv(TypeError : 'ApplyResult' object is not iterable)

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:35 25 4
gpt4 key购买 nike

我有一个用于分析大型 csv 文件的脚本,因此我需要启动多处理。我使用了 multiprocessing 模块,它工作正常,但如果我尝试将输出列表写入 csv 文件,它会抛出错误:

TypeError: 'ApplyResult' object is not iterable

我查找了一些解决方案,包括 multiprocessing: TypeError: 'int' object is not iterable但无法解决问题。这是代码:

from multiprocessing import Pool
import csv
pool = Pool()

nodes = [['1001', '2008-01-06T02:12:13Z', ['']],
['1002', '2008-01-06T02:13:55Z', ['']],
['1003', '2008-01-06T02:13:00Z', ['Lion', 'Rhinoceros', 'Leopard', 'Panda']],
['1004', '2008-01-06T02:15:20Z', ['Lion', 'Leopard', 'Eagle', 'Panda', 'Tiger']],
['1005', '2008-01-06T02:15:48Z', ['Lion', 'Panda', 'Cheetah', 'Goat', 'Tiger']],
['1006', '2008-01-06T02:13:30Z', ['']],
['1007', '2008-01-06T02:13:38Z', ['Cheetah', 'Tiger', 'Goat']]]

def nodes_to_links(nodes_list):
output_list = []
for ii, elem in enumerate(nodes_list[:-1]):
for jj in range(ii + 1, len(nodes_list)):
common = set(elem[-1]).intersection(
set(nodes_list[jj][-1]))
if len(common) > 0 and common != {''}:
output_list.append([elem[0], nodes_list[jj][0], ','.join(map(str, list(common)))])
return output_list

#links = nodes_to_links(nodes) ###This works perfect without multiprocessing
links = pool.apply_async(nodes_to_links, (nodes)) ### This works if I don't write the list "links" to a csv, but not otherwise

# Write links to a csv file
def writeCSV(list_to_write, OutputFileName):
file = open(OutputFileName, 'w', newline='')
writer = csv.writer(file, quotechar='"', delimiter=';',quoting=csv.QUOTE_ALL, skipinitialspace=True)
for row in list_to_write:
writer.writerow(row)

writeCSV(links,'output_files/test.csv')

我尝试使用 pool.join()pool.close() 但这也无济于事。谁能帮忙。请注意,列表 nodes 非常大,我只是在这里举一个例子,所以多处理是必不可少的。如果我的 CPU 中有 4 个内核和 8 个线程,我还可以知道如何指定处理器数量吗?

最佳答案

pool.apply_async 返回 pool.AsyncResult目的。此对象不可迭代 - 相反,您需要调用其 get() 方法 - 即 writeCSV(links.get(),'output_files/test.csv') (可选超时)。

关于python - 多处理 - 无法将列表写入 csv(TypeError : 'ApplyResult' object is not iterable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com