码迷,mamicode.com
首页 > 其他好文 > 详细

并发编程

时间:2018-12-27 22:49:03      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:import   lse   比例   int   服务器   永久   div   ==   模块   

进程:

  进程是系统进行资源分配和调度的基本单位,进程是程序的实体。程序是永久的,线程是暂时的

  学习进程肯定要知道模块的使用,multiprocessing模块
调度:
  一。先来先服务(FCFS)调度算法是一种最简单的调度,这种算法比较有利于长作业(进程),不利于短作业(进程)
  二。短作业优先调度算法即可用于作业调度,也可用进程调度。但对长作业不利,不能保证紧迫性作业被及时处理,
  三。时间片轮转是让每个进程在就绪队列中等待时间与享受服务的时间成比例
  四。多级反馈队列既能使高优先级的作业得到响应又能使短作业迅速完成
Process类使用
from multiprocessing import Process
def _add(name):
    print(‘python‘,name)

if __name__ == ‘__main__‘:
    p = Process(target=_add,args=(‘process‘,))
    p.start()
    p.join()

  通过创建Process对象然后调用其start()方法生成进程,多个进程同时运行(子进程的执行顺序不是根据启动顺序巨鼎的)

  通过对Process类的使用可以写一个简单的一对服务器的聊天
Queue:
  Queue是多进程安全的队列,可以使用Queue实现进程之间的数据传递
from multiprocessing import Queue
from multiprocessing import Process
queue = Queue(maxsize=3)  # 默认-1 不限制大小
def add(q):
    while True:
        # if not q.empty():#判断队列是否为空
        r = q.get()  # 从队列中取值
        print(r)
    else:
        print("队列为空")
def ass(q):
    while True:
        i = 0
        while True:
            if not q.full():
                i += 1
                q.put("123")
            else:
                print("aaa")
if __name__ == ‘__main__‘:
    q = Process(target=add, args=(queue,))
    q1 = Process(target=ass, args=(queue,))
    q.start()
    q1.start()
守护进程:
  守护进程会在主进程代码执行结束后就终止,在守护进程内无法再次开启子进程,否则会抛出异常
进程锁:
  当多个进程使用一份数据的时候,会引发数据不准确,所以解决的办法就是在获取数据时加一把锁,


 

并发编程

标签:import   lse   比例   int   服务器   永久   div   ==   模块   

原文地址:https://www.cnblogs.com/fsrmyc/p/10187212.html

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