zoukankan      html  css  js  c++  java
  • 并发

    轮询调度实现并发

    轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。 

    时间片轮转:(执行完第1个任务,再执行第2个,...)

    优先级调度:(有优先顺序)

    多线程实现并发:

    线程被称为轻量级进程(微进程),与进程类似,是在进程下执行的,并且线程之间共享上下文

    # -*- coding: utf-8 -*-
    ''' 多进程实现并发 python GIL保证同时刻只会执行一个线程,如果线程阻塞会切换到下一个线程 '''
    import socket
    import threading
    
    
    server = socket.socket()
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((
    '', 8888)) server.listen(5) # 生成监听套接字 def server_recv(conn): while True: recv_data = conn.recv(1024) if recv_data: print(recv_data.decode()) conn.send(recv_data) else: conn.close() break while True: conn, addr = server.accept() # 生成对等套接字 # 将阻塞的对等套接字存入线程, recv就会在自己的线程中阻塞,达到并发效果 thread = threading.Thread(target=server_recv, args=(conn, ), daemon=True) thread.start()

    其它操作:进程线程类似

    process = multiprocessing.Process(target=fun)
    process.start()
    process.current_process() # 查看当前进程
    process.join()  # 等待子进程process结束后,主进程才会结束(阻塞)  等同线程
    process.ternamite() # 父进程结束,子进程强制结束    线程不能被终止
  • 相关阅读:
    SQL语句汇总——数据修改、数据查询
    Spring AOP详解
    action类中属性驱动和模型驱动的区别
    数组指针的用法,用处。
    C,C++回文字符串判断(字符串指针的用法)
    C,C++容易被忽略的问题
    c,c++函数返回多个值的方法
    adsf
    Establishing a Build Environmen
    Setting up a Mac OS build environment
  • 原文地址:https://www.cnblogs.com/tangpg/p/10616084.html
Copyright © 2011-2022 走看看