1、为提高python写入文件的速度,可以使用多线程函数进行处理,如果进程池中任何一个任务一旦处理完成,则立即告知
主进程:可以处理该任务的结果。主进程则调用一个函数去处理该结果,该函数即回调函数。我们可以把耗时间(阻塞)的
任务放到进程池中,然后指定回调函数(主进程负责执行)。
2、异步回调函数 apply_async说明如下:
def apply_async(self, func, args=(), kwds={}, callback=None,
error_callback=None):
'''
Asynchronous version of `apply()` method.
func:调用的函数
args:给函数传参
'''
if self._state != RUN:
raise ValueError("Pool not running")
result = ApplyResult(self._cache, callback, error_callback)
self._taskqueue.put(([(result._job, 0, func, args, kwds)], None))
return result
3、具体代码示例如下:
from multiprocessing import Pool
import datetime
def setmycallback(x):
#写入文件方法
with open('Text.csv','w') as f:
line=str(x)+'\n'
f.write(line)
def content(num):
#写入内容格式
w=[str(num),str(num+1),str(num+2)]
return w
if __name__=='__main__':
start=datetime.datetime.now()
p=Pool(5)#开启进程
for i in range(100):
p.apply_async(content,(i,),callback=setmycallback)#调用进程
p.close()
p.join()
end = datetime.datetime.now()
print((end - start))