PYTHON多进程方式写入文件

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))
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值