Python编码/文件读取/多线程

简介:

个人笔记~~记录才有成长   编码/文件读取/多线程

编码

  常用的一般是gbk、utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字来处理,所以需要对不同的编码格式进行转化。

  这里需要的函数decode和encode,形式都很简单,只要牢记对应的格式对应的编码就好

如果是utf-8,想转换成unicode
content.decode('utf-8')
如果是Utf-8,想转换成gbk
content.decode('utf-8').encode('gbk')

  注意:对于Python可以在.py中指定编码格式,如下选择的是utf-8格式

# -*- coding: utf-8 -*-

文件读取

传统的读法,全部读出,按行处理:

fp=open("./output.txt", "r");
alllines=fp.readlines();
fp.close();
for eachline in alllines:
    print eachline;

使用文件迭代器 每次只读取和显示一行:

fp=open("./output.txt", "r");
for eachline in fp:
    print eachline;

读取和保存CSV文件,使用CSV模块

复制代码
import csv

def loadFile(file_name):
    f = open(file_name)
    r = csv.reader(f)
    for item in r:
        print item
    type = sys.getfilesystemencoding()
    for line in r:

def saveFile(result):
    writer = csv.writer(open('result.csv','w'), dialect='excel')
    for item in result:
        writer.writerow(item)
复制代码

多线程

  由于程序数据有点大,尝试一下Python的多线程,其实和C++/JAVA都是类似的

调用thread模块中的start_new_thread()函数来产生新线

复制代码
import time
import thread

def timer(n, ID):
    cnt = 0
    while cnt<n:
        print 'Thread:(%d) Time:%s\n'%(ID,time.ctime())
        cnt+=1
    thread.exit_thread()
   
 
def test(): #Use thread.start_new_thread() to create 2 new threads
    thread.start_new_thread(timer, (5,1))
    thread.start_new_thread(timer, (5,2))
 
if __name__=='__main__':
    test()
复制代码

  python中的线程是通过thread模块来调用的,调用thread.start_new_thread()函数,该函数由两部分参数,第一个参数为线程函数,第二个参数为提供给线程函数的tuple型参数。

使用threading模块的 Thread类

   这里要接触到继承的概念了,这种处理方式相对来说要清晰的多。

  通过调用threading模块继承threading.Thread类来包装一个线程对象。

  • 在自己的线程类的__init__里调用threading.Thread.__init__(self, name = threadname)
  • Threadname为线程的名字
  • run(),通常需要重写,编写代码实现做需要的功能。
  • getName(),获得线程对象名称
  • setName(),设置线程对象名称
  • start(),启动线程
  • jion([timeout]),等待另一线程结束后再运行。
  • setDaemon(bool),设置子线程是否随主线程一起结束,必须在start()之前调用。默认为False。
  • isDaemon(),判断线程是否随主线程一起结束。
  • isAlive(),检查线程是否在运行中。
复制代码
import time
import thread
import threading

def timer1(n, ID):
    cnt = 0
    while cnt<n:
        print 'Thread:(%d) Time:%s\n'%(ID,time.ctime())
        cnt+=1
    thread.exit_thread()
   
class timer2(threading.Thread): #The timer class is derived from the class threading.Thread
    def __init__(self, ID):
        threading.Thread.__init__(self)
        self.m_ID = ID
        self.m_stop = False

    def run(self):
        while not self.m_stop:
            time.sleep(2)
            print 'Thread Object(%d), Time:%s\n' %(self.m_ID, time.ctime())

    def stop(self):
        self.m_stop = True
    
def test(): #Use thread.start_new_thread() to create 2 new threads
    #thread.start_new_thread(timer1, (5,1))
    #thread.start_new_thread(timer1, (5,2))
    thread1 = timer2(1)
    thread2 = timer2(2)
    thread1.start()
    thread2.start()
    time.sleep(5)
    thread1.stop()
    thread2.stop()
 
if __name__=='__main__':
    test()
复制代码

 本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/p/3322196.html,如需转载请自行联系原作者

相关文章
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
16天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
18天前
|
算法 数据处理 Python
Python并发编程:解密异步IO与多线程
本文将深入探讨Python中的并发编程技术,重点介绍异步IO和多线程两种常见的并发模型。通过对比它们的特点、适用场景和实现方式,帮助读者更好地理解并发编程的核心概念,并掌握在不同场景下选择合适的并发模型的方法。
|
25天前
|
监控 数据处理 索引
使用Python批量实现文件夹下所有Excel文件的第二张表合并
使用Python和pandas批量合并文件夹中所有Excel文件的第二张表,通过os库遍历文件,pandas的read_excel读取表,concat函数合并数据。主要步骤包括:1) 遍历获取Excel文件,2) 读取第二张表,3) 合并所有表格,最后将结果保存为新的Excel文件。注意文件路径、表格结构一致性及异常处理。可扩展为动态指定合并表、优化性能、日志记录等功能。适合数据处理初学者提升自动化处理技能。
21 1
|
30天前
|
存储 并行计算 Java
Python读取.nc文件的方法与技术详解
本文介绍了Python中读取.nc(NetCDF)文件的两种方法:使用netCDF4和xarray库。netCDF4库通过`Dataset`函数打开文件,`variables`属性获取变量,再通过字典键读取数据。xarray库利用`open_dataset`打开文件,直接通过变量名访问数据。文中还涉及性能优化,如分块读取、使用Dask进行并行计算以及仅加载所需变量。注意文件路径、变量命名和数据类型,读取后记得关闭文件(netCDF4需显式关闭)。随着科学数据的增长,掌握高效处理.nc文件的技能至关重要。
108 0
|
26天前
|
安全 Python
Python中的并发编程:多线程与多进程技术探究
本文将深入探讨Python中的并发编程技术,重点介绍多线程和多进程两种并发处理方式的原理、应用场景及优缺点,并结合实例分析如何在Python中实现并发编程,以提高程序的性能和效率。
|
1月前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
|
1天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
17 0
|
17天前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件
|
17天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
17 3
python并发编程: Python使用线程池在Web服务中实现加速

热门文章

最新文章