标签:python 多进程 多线程
1,数据集合:
set:
class set([iterable]) 特点:不允许数据重复,会删除重复数据,不对数据排序
list:
class list([iterable]) 特点:允许数据重复
tuple:
如a=(1,2,3) 允许数据重复,但是元组初始化后,不可做增加,改值等操作,里面的数据将无法改变
Dictionary:
如 a={"1":"one"} key不应该重复,否则,key只会指向最后一个value
2,数据的序列化:
首先通过open(),打开输入/输出流,并得到一个流对象f
Input:
Pickle(data,f) //对象序列化
Output:
Pickle(f) //对象的反序列化
3,多进程:
在Linux系统中,python可以通过os模块很方便的创建子进程,
pid=os.fork()就在原进程的基础上创建了子进程,此后的代码有父进程和子进程执行。
fork()调用一次返回两次,在父进程中返回子进程的id,子进程中将返回0,子进程可通过getppid()获取父进程id,通过getpid()获取自己的id,
windows系统中,通过封装multiprocessing模块,通过提供process类来创建子进程,
def fun(name):
print(name)
form multiprocessing import process
p=process(target=fun,args=(‘bob‘,))
p.start()
p.join()
对于join()有必要解释一番 join([timeout]),有默认的参数,单位为秒,调用join()后,父进程将会等待子进程完成任务锁定才执行,如果对join()设置参数,子进程将在到达指定时间后锁定,然后父进程执行。否则,父进程将等待python锁定子进程,才能继续执行。
进程池Pool():
class multiprocessing.pool.Pool([processes[, initializer[, initargs[, maxtasksperchild[, context]]]]])
主要是第一个参数processes:指的是同时执行的进程数,如果不指定参数,python将默认为电脑的核心数
进程间通信,通过Queue,Pipes来完成,只需参考
4,多次线程:
多线程有两种实现方案,一种是常见的继承threading类,然后复写run()方法,即可第二种则是调用threading.thread()构造方法,将要执行的函数当做参数传入进去
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={},*,daemon=None)再调用start()方法即可,线程中依然有join()方法,其用法跟进程类似,当子线程调用join()时,主线程将停止执行下面的代码,等待子线程完成任务锁定再执行。如果没有调用,则子线程与主线程并行执行。
多进程与多线程之间的差别:多进程中,一个变量,每个进程都会自己拷贝一份,互不影响,而多线程中,每个线程则公用一个变量,所以,这个时候,需要格外注意,线程的并发。必要的时候,同一时刻只能允许一个线程对变量进行操作
目前大概记得这么些基本知识,有错误欢迎指出,现在已经饿昏了头。。
标签:python 多进程 多线程
原文地址:http://7841277.blog.51cto.com/7831277/1671413