并发编程

Posted fsrmyc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程相关的知识,希望对你有一定的参考价值。

进程:

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

  学习进程肯定要知道模块的使用,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()
守护进程:
  守护进程会在主进程代码执行结束后就终止,在守护进程内无法再次开启子进程,否则会抛出异常
进程锁:
  当多个进程使用一份数据的时候,会引发数据不准确,所以解决的办法就是在获取数据时加一把锁,


 













以上是关于并发编程的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

《java并发编程实战》

Java并发编程实战 04死锁了怎么办?

Java并发编程实战 04死锁了怎么办?

Java编程思想之二十 并发

golang goroutine例子[golang并发代码片段]