python 多进程读写文件
import time
from multiprocessing import Process, JoinableQueue, cpu_count
import csv ####处理一条数据的方法
def deal_line(line, writer, csv_file):
writer.writerow((line[3], line[1]))
csv_file.flush()#重点,在多进程中写文件需要尽快刷新,否则可能会导致数据丢失 ####消费者模型
def consumer(queue, writer, csv_file):
while True:
line = queue.get()
deal_line(line, writer, csv_file)
queue.task_done()
####生产者模型
def producer(queue):
with open('test.txt', 'r') as f:
for line in f:
queue.put(line) ####启动N个生产者N个消费者模型
def main():
with open('t1.csv', 'w+') as csv_file:
writer = csv.writer(csv_file)
queue = JoinableQueue(8)#可限制队列长度
pc = Process(target=producer, args=(queue,))
pc.start() #多消费者
for _ in range(cpu_count()):
c1 = Process(target=consumer, args=(queue, writer, csv_file))
c1.daemon = True
c1.start()
pc.join()#等待生产者进程全部生成完毕
queue.join()# 等待所有数据全部处理完毕 # 当某些些进程是死循环时可强制终止
# pc.terminate() if __name__ == '__main__': now = lambda: time.time()
start = now()
main()
print("Time:", now() - start)
python 多进程读写文件的更多相关文章
- Python 3 读写文件的简单方法!
Python 3 读写文件的简单方法! a = open('test.txt','w') 这行代码创建了一个名为test的文本文档,模式是写入(模式分为三种,w代表写入,r代表阅读,a代表在尾行添加) ...
- 笨方法学python之读写文件、open函数的用法
一.python读写文件相关知识点 close:关闭文件 read:读取文件的内容//你可以把结果赋给一个变量 readline:只读取文件中的一行 truncate 美 /trʌŋ'ket/ :清空 ...
- Python:读写文件(I/O) | 组织文件
1. I/O 概述 程序与用户交互涉及到程序的输入输出(I/O) 一种类型是字符串,通过input() 和 print() 函数以及数据类型转换类函数如(int()),实现数据的输入输出. 另一种类 ...
- python查找读写文件
import os ''' 跟据文件名称,后缀查找指定文件 path:传入的路径 filename:要查找的文件名 suffix:要查找的文件后缀 return :返回查找的文件路径 ''' file ...
- python之读写文件
1. 读取文件数据,文件必须存在才可以读且如要读取的文件不和当前.py在同一个包下,需要特别指定此文件路径才行 f=open('test.txt',encoding='utf-8')#填写文件路径,打 ...
- Python 多进程拷贝文件夹案例
import os import multiprocessing def copy_file(q, file_name, old_folder_name, new_folder_name): &quo ...
- 【python】 读写文件
#标准输出 sys.stdout.write() sys.stderr.write() #标准输入 while True : try: line = raw_input().rstrip(); exc ...
- Python中读写文件三部曲
写入文件:要把第二个参数 'r' 改成 'w' ,表示write,即以写入的模式打开文件; 往文件中写入内容,使用write()函数. 例子如下:注意 'w' 写入模式会暴力清空掉原有文件,然后再写 ...
- python 二进制读写文件
#-*- coding: utf-8 -*- f = open('f:/text.bmp','rb') filedata = f.read() filesize = f.tell() f.close( ...
随机推荐
- pathlib模块替代os.path
pathlib模块替代os.path 在Python 3.4之前和路径相关操作函数都放在os模块里面,尤其是os.path这个子模块,可以说os.path模块非常常用.而在Python 3.4,标准库 ...
- POJ 3259 Wormholes SPFA算法题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- 各类无次数限制的免费API接口,再也不怕找不到免费API了
各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免 ...
- 【 React - 1/100 】React绑定事件this指向问题--改变state中的值
/** * 报错: * Cannot read property 'setState' of undefined * 原因: this指向不一致.btnAddCount中的this 和render中的 ...
- Memcached下载安装和使用
一.简介:Memcached 是一个高性能的分布式,基于内存的key-value存储的对象缓存系统(并不是一个数据库),用于动态Web应用以减轻数据库负载. 二.下载和安装1.下载和安装Memcach ...
- 欢迎使用Markdown编辑器
#欢迎使用Markdown编辑器 你好 ,这是我第一次使用Markdown编辑器所展示的页面.如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识. ...
- Beta冲刺-(2/3)
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...
- mysql查询每个直播间每个用户最早进入时间和最晚退出时间
myself_sql = 'select room_id,source_id user_id,min(cast(at as datetime)) joinroom,max(cast(at as dat ...
- activity manager
首先 activity manager 作为一个独立的服务存在,所有系统中的所有 app 的 activity 都通过这个 service 来管理 同时 activity manager 维护着多个 ...
- C#基础知识之dnSpy反编译
dnSpy工具可以在网上自行下载 软件界面如下: 现在进入话题,首先编写一个Hello World的控制台运行程序,如下图所示: 代码如下: using System; using System.Co ...