码迷,mamicode.com
首页 > 系统相关 > 详细

网络编程 ----------进程

时间:2017-12-01 20:42:19      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:posix   tip   nbsp   pc机   同步   arc   元组   网络   strong   

 

multiprocessing 模块

功能:

支持多进程 ,提供了Process(创建子进程)/ Queue(队列)lock(锁)

与线程不同,进程没有任何共享状态,进程修改数据仅限于该进程内

Process([group[,) 该类字例化得到一个对象,表示一个了进程中的任务

强调:

     需要用关键字的方式来指定参数

     args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号

 

p.start(): 启动进程,并调用该子进程中的p.run()#(方法)

p.terminate():强制终止进程p,不会进行任何清理操作(僵尸进程)

p.join 主线程等待p终止

p.daemon:  守护进程

守护进程

  1主进程代码结束后终止

  2守护进程无法开启了进程,否则抛出异常

 

同步锁:

  共享的内存空间

  with 功能  和文件操作的IO一样 

  with lock:

    get(n)

  def task(n,lock):

    search(n):

    lock.acquire()  加锁

    get(n)

    lock.release() 开锁

IPC机制(进程之间的交互)

    1 多进程之间内存共享

  2 竞争带来的不安全  >>>加锁

方式 :

        1  队列 (管道 + 锁  》》》先进先出)  queue

    2  管道

 

进程

抽象单位

是一个资源单位

默认一个线程

进程池

  控制进程的数目

 进程池同步调用 

  提交一个任务,等到任务结束后才能执行下一个任务

apply: 传入两个参数,第一个指定,第二个向进程池提交任务实现后立马拿到结果

import multiprocessing

import time
import random
import osdef walk(n):
    print(%s is walk%os.getpid())
    time.sleep(random.random())
    return n
if __name__ == __main__:
    p = multiprocessing.Pool(4)
    for i in range(5):
        q = p.apply(walk,args=(i,))
        print(q)

 

进程池异步提交

  提交完一个任务过后不会在原地等待,而是把所有任务提交完后用get获取

apply_async:  向进程池提交任务,只管提交任务不管执行,
执行方法: close: 结束任务
               join :等待进程池不在提交任务,并且任务结束和计算个数 
               get : 获取返回值
import multiprocessing
import time
import random
import os
def walk(n):
    print(%s is walking%os.getpid())
    time.sleep(2)
    return n
if __name__ == __main__:
    p = multiprocessing.Pool(4)
    li=[]
    for i in range(6):
        q = p.apply_async(walk,args=(i,))
        li.append(q)
    p.close()
    p.join()
    for i in li:
        print(i.get())
        

 

 

异步调用 

提交完任务,不用在原地等待

命名空间是用来存储数据的在内存里

 

水平扩展

  增加计算机的数量,并没有提高计算机的性能

虚拟化

  同时跑多个系统

分布式和集中式

  集中式在一台机器上执行任务

  分布式将任务分散到多台机器上

 

joinableQueue模块

  比Queue 多了两个函数,一个是task_done,另一个join,都是专用于全球性进行     编程的,大多数用于生产者和消费者之间的。

  task_done: 是用于在get后面的,告诉os已经处理完了内容

  join : 是说Queue里面的生产数据全部处理完了

   

 

 

OS 模块:

 

1. os.name——判断现在正在实用的平台,Windows 返回 ‘nt‘; Linux 返回’posix‘

2. os.getcwd()——得到当前工作的目录。

3. os.listdir()——指定所有目录下所有的文件和目录

4.os.getpid() ------查看进程的序列号

 

网络编程 ----------进程

标签:posix   tip   nbsp   pc机   同步   arc   元组   网络   strong   

原文地址:http://www.cnblogs.com/tianjianng/p/7943069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!