py13---8.30

14 篇文章 0 订阅

序列化:把变量从内存中变成可存储或传输的过程称之为序列化

常用的是JSON(json的标准规定它的编码是utf-8);dumps返回的是一个str

import json
d=dict(name='bob',age=20,score=99)
json.dumps(d)

dump&dumps区别:(同理类似load&loads)

import pickle
f=open('test.txt','wb')
pickle.dumps(d)
>>>b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'

pickle.dump(d,f)
f.close()

进程&线程:

调用os模块里面的fork()                        但是注意windows系统没有fork()调用,在win系统下调用fork会出错。multiprocessing模块就是跨平台版本的多进程模块

粗心!!!!if__name__=='__main__'

进程池POOL   如果要启动大量的子进程,可以用进程池的方式批量创建子进程

from multiprocessing import Pool

对Pool对象调用join()方法会等待所有子进程执行完毕,调用join()之前必须先调用close(),调用close()之后就不能继续添加新的Process了。

apply_async():非阻塞式方法,根据系统的调度进行进程的切换

子进程:import subprocess,如果子进程需要输入则通过communicate()方法输入

import subprocess

print('$ nslookup')
p = subprocess.Popen(['nslookup'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate(b'set q=mx\npython.org\nexit\n')
print(output.decode('utf-8'))
print('Exit code:', p.returncode)

UnicodeDecodeError: 'utf-8' codec can't decode byte:一般的原因是因为decode()方法的第二个参数选择了默认的strict,将其改为ignore即可解决问题

 

进程间的通信   from multiprocessig import Queue,Process

Queue提供了get()和put()方法:个人理解,申请一个队列空间(有长度限制),利用put&get方法存放和获取队列信息大道通信的目的

q=Queue()
q.put(value)
q.get()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值