java转python记录 七

StringIO和BytesIO    IO模块中的两个类

os操作目录    os.path.join()    拼接路径    windows路径分隔符为\    linux为/
os.rename()     给文件重命名
os.remove()    删除文件
os.path.split()    分割目录和文件名
os.path.splitext()    分割文件名后缀
pickle模块    实现序列化    
pickle.dump(obj,file)     写入文件    pickle.load(file)    从文件中读取对象

json对象和python对象的互相转换

json模块    

json.dump(obj)    把对象转换为json字符串    json.loads(jsonStr)    从json字符串中读取对象

json对象和具体类型之间的转换    json.dump(obj,default=转换函数)    json.loads(str,object_hook=转换函数)

python    支持多进程,多线程

pid = os.fork()    //只能在linux平台运行,生成的pid是子进程的pid     感觉上不是很好用

mutiprocessing模块    多进程模块mutiprocessing.Process进程    可以在windows平台运行

p = Process(target=myFunc, args=('test',))    #myFunc是自己编写的进程任务 
p.start()    #开始任务
p.join()    #主进程等待子进程完成

多进程模块mutiprocessing.Pool    进程池

p = Pool(4)    #进程池    默认的进程池大小是CPU核心数量
for i in range(5):    
    p.apply_async(myTask, args=(i,))    #myTask是自己的进程任务
p.close()    #p.close()方法,必须在join()之前调用,调用之后就不能再提交进程到进程池中
p.join()    #等待进程池完成
q = Queue()   #队列,用于进行进程数据交换
pw = Process(target=write, args=(q,))    #write 写进程
pr = Process(target=read, args=(q,))    #read 读进程
pw.start()
pr.start()
pw.join()

注意:windows系统下进行数据交换需要pickle进行序列化,再进行传递

Python多线程 :    _thread 和 threading    _thread底层模块,threading高级模块,一般使用threading即可

t = threading.Thread(target=func, name='myFunc')    #func为线程任务
t.start()
t.join()

threading.current_thread()    返回当前线程

lock = threading.Lock()    新建线程锁

lock.acquire()    获得锁

lock.release()    释放锁

python中线程是没法使用所有cpu资源的比如400%的使用率用python多线程是无法实现的,但可以使用多进程实现。

local = threading.local()    ThreadLocal对象,可以存放变量,是线程独立的

分布式进程    python可以利用multiprocessing,managers编写分布式进程,多进程任务可以改成分布式任务

上一篇            下一篇

猜你喜欢

转载自blog.csdn.net/livelse/article/details/80881310