Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python多处理池从不以apply\u async启动_Python_Pandas_Multiprocessing_Generative Adversarial Network - Fatal编程技术网

python多处理池从不以apply\u async启动

python多处理池从不以apply\u async启动,python,pandas,multiprocessing,generative-adversarial-network,Python,Pandas,Multiprocessing,Generative Adversarial Network,当我调试脚本时,池循环遍历每个项,然后就结束了,而没有转到我的函数 这很奇怪,因为我在另一个脚本中使用了几乎相同的结构,实际上运行良好 我的第一个脚本运行良好: #我的数据集 #列:缺勤(0-5)、学校(5个值)、周(11个值)、年级(9个值) #用于创建ID的其他列:学生ID、ID 导入日志记录 作为pd进口熊猫 将numpy作为np导入 随机输入 将多处理作为mp导入 #皇后区 Q_考勤\u RAW=r“D:\Fake Data\Full Q今年缺勤。csv” Q_考勤\u输出=r“D:\F

当我调试脚本时,池循环遍历每个项,然后就结束了,而没有转到我的函数

这很奇怪,因为我在另一个脚本中使用了几乎相同的结构,实际上运行良好

我的第一个脚本运行良好:

#我的数据集
#列:缺勤(0-5)、学校(5个值)、周(11个值)、年级(9个值)
#用于创建ID的其他列:学生ID、ID
导入日志记录
作为pd进口熊猫
将numpy作为np导入
随机输入
将多处理作为mp导入
#皇后区
Q_考勤\u RAW=r“D:\Fake Data\Full Q今年缺勤。csv”
Q_考勤\u输出=r“D:\Fake Data\Cleaned Q Attention.csv”
#布鲁克林
K_考勤\u RAW=r“D:\Fake Data\Full K缺席今年。csv”
K_Attention_OUTPUT=r“D:\Fake Data\K Attention.csv”
#曼哈顿
M_考勤\u RAW=r“D:\Fake Data\Full M今年缺勤。csv”
M_Attention_OUTPUT=r“D:\Fake Data\M Attention.csv”
#斯塔顿岛
R\u考勤\u RAW=R“D:\Fake Data\R Full缺席今年。csv”
R\u Attention\u OUTPUT=R“D:\Fake Data\R Attention.csv”
BORO_DICT={Q_出席人数\原始:Q_出席人数\输出,
K_考勤_原始:K_考勤_输出,
M_考勤\u原始:M_考勤\u输出,
R_考勤\u原始:R_考勤\u输出}
所需列=[“缺席”、“学校”、“周”、“年级”]
#学生证,学生证
def过程_帧(输入_文件、输出_文件):
df=pd.read\u csv(输入文件,
usecols=所需的(列)
所需列名称=[“缺勤次数”、“DBN”、“缺勤周”、“成绩”]
df.columns=所需的列名称
df.to_csv(输出_文件,
索引=假)
info(f'Done with{input_file}')
def测试(i,o):
f=打开(o,'w')
f、 写入(o)
f、 关闭()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
logging.basicConfig(级别=logging.INFO)
logger=logging.getLogger(_名称__)
#我们有4个核,所以这是我们可以并行处理的最大值
pool=mp.pool(mp.cpu\u count())
#交替传入mp.cpu\u count()
对于BORO_DICT.items()中的k,v:
#apply\u async(test,args=(k,v),callback=collect\u结果)
apply_async(进程_帧,参数=(k,v))
#pool.map(test,BORO_DICT.items())
#关闭池以完成所有进程
pool.close()
#推迟执行下一行,直到所有队列进程完成
pool.join()
#logger.info(结果)
logger.info('Done')
我的第二个脚本无法工作(没有错误消息,它只是不提供输出):


导入日志记录
导入操作系统
作为pd进口熊猫
进口火炬
将多处理作为mp导入
从dpwgan导入分类数据集
从dpwgan.utils导入创建分类
从examples.create_depension_data import BORO_DICT
输出=r“D:\Fake Data\Fake Q Absences.csv”
THIS_DIR=os.path.dirname(os.path.realpath(u文件_u))
噪音_DIM=20
隐藏尺寸=20
西格玛=1
def过程(文件):
手电筒。手动种子(123)
logging.basicConfig(级别=logging.INFO)
logger=logging.getLogger(_名称__)
logger.info('正在准备数据集…')
尝试:
df=pd.read\u csv(文件,dtype=str)
除FileNotFoundError外:
打印('错误:数据文件不存在。\n'
'请先运行'创建缺勤数据.py'。')
返回
数据集=分类数据集(df)
data=dataset.to_onehot_flat()
gan=创建分类gan(噪音、隐藏、数据集、维度)
logger.info('Training GAN…'))
gan.列车(数据=数据,
纪元=10,应该是50,但我不耐烦了
n_=5,
学习率=1e-4,
重量\u剪辑=1/隐藏\u尺寸,
西格玛=西格玛)
logger.info('正在生成合成数据…')
平面合成数据=gan.generate(len(df))
合成\u数据=数据集。从\u onehot\u平面(平面\u合成\u数据)
如果文件中有“K”:
输出=r“D:\Fake Data\Fake K Attention.csv”
文件中的elif“Q”:
输出=r“D:\Fake Data\Fake Q Attention.csv”
文件中的elif“R”:
输出=r“D:\Fake Data\Fake r attention.csv”
文件中的elif“M”:
输出=r“D:\Fake Data\Fake M attention.csv”
合成数据到csv(输出,索引=False)
info('保存为{}格式的合成数据(输出))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
池=mp.池(4)
对于BORO_DICT.items()中的k,v:
pool.apply_async(进程,v)
pool.close()

顺便说一下,GAN部分来自civis在github上的项目。

apply\u async
不起作用。我切换到
map
,效果很好,根据评论中的建议,还添加了上下文管理:

以mp.Pool(进程=4)作为池:
池=mp.池(4)
pool.map(进程,BORO_DICT.values())

使用上下文管理器。它们不需要任何成本,而且可以帮你解决一大堆问题。此外,请包括我们运行该程序可能需要的任何数据。请参阅:。此处返回流程结果的顺序是否重要?有多少项需要处理?