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编写分布式进程,多进程任务可以改成分布式任务。
上一篇 下一篇