result = []
pool = Pool(processes=10) # 并发数量设为10
for foldername in folderlist:
path_dfs = path + foldername + '/pre_new/'
os.makedirs(path_dfs)
path_info = path + foldername + '/样本分析.csv'
path_1 = path + foldername + '/edge_info_total_0.7.csv' # 边数据(包含相似度>=0.67)
path_2 = path + foldername + '/node_info.csv'
path_3 = path + foldername + '/pre_new/component_element.csv' # 输出,存储包含每个组成单元的知识元
path_4 = path + foldername + '/pre_new/edge_info_childnet.csv' # 输出,存储张成子图点边权重信息
path_5 = path + foldername + '/pre_new/un_link.csv'
result.append(pool.apply_async(main, args=(foldername, path_info, path_1, path_2, path_3, path_4,path_5,)).get())
pool.close()
pool.join()
for i in result:
print(i)
谢谢,我问题解决了,其实不是for的问题,而是get()的问题,这里的get需要获取值,在没有值时,get就会让程序出现阻塞直到等到值,所以for循环的每一步都要等到值才会继续下一个for循环,就出现了类似同步的情况。这是改后的答案
要以调用函数的形式才可以
把for循环写成一个def,用多线程调用