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,多进程)