我有一个名为" mj_flt"的大型熊猫数据框架,并希望根据数据框架中的某些列进行一些操作,并将结果附加到一个空列表中。由于数据框太大,因此我需要使用for for loop来批量处理数据框架。我试图并行的代码如下:
start = np.array(np.arange(0,6900000,300000))
end = np.array(np.arange(300000,7200000,300000))
tim = []
for (i,j) in zip(start,end):
for index, row in mj_flt[i:j].iterrows():
## do some stuff with row['a'],row['b'],row['c'],row['d']
## get a result based on the operation
tim.append(result)
如何使用多处理模块和池函数使其嵌套以使循环并行?
很多!
您必须做一些事情才能像预期一样工作。线程池是等待线程的池,等待函数和要执行的参数。它通常还具有n个元素(可调节(的候补名单来堆叠即将到来的工作。对于您要执行的任务,您必须使用与处理器内核一样多的线程。更多不会加快工作的速度。
现在到达代码:您需要一个功能,采用一个参数,该参数应包含该功能工作所需的所有数据。取决于您将如何操纵您还需要使用某些锁定系统的数据,无论是使用静音锁,信号量等。
在输入循环之前,只要您要传递的最大函数量,或者add_work_to_to_thread_pool系统应阻止,直到某个房间由某个房间制成,则应使用CPU_CORS线程和等待列表分配线程池和等待列表。线程完成工作。
在for循环内部,您将函数(参数(添加到等待列表。等待列表将一次由分配的_threads消耗。
for循环后,您必须等待每个线程处于等待状态,并且等待列表为空,以确保所有作业都完成。
在Python线程的帮助下,等待列表手册以及一些Google我认为您现在可以自己编码。
其他可以随时要求对特定要点进行一些澄清,然后返回您尝试执行的代码,而这无法正常工作。我的意思是用线程代码。不只是您粘贴的片段。
有一个愉快的时光,多任务很有趣: - (