Flask 多进程多线程异步非阻塞测试

非阻塞测试

  • 多进程
  • 多线程

多进程

from flask import Flask
import time
import multiprocessing

app = Flask(__name__)

num = multiprocessing.Value("d", 1)  # d表示数值,主进程与子进程共享这个value。(主进程与子进程都是用的同一个value)

def func(num):

    print('子线程1:', num.value)
    time.sleep(5)
    print('睡眠完成')
    a=1/0
    num.value = 1  # 子进程改变数值的值,主进程跟着改变
    print('子线程2:',num.value)
    # return '子线程处理完成'


@app.route('/')
def hello_world():

    if num.value:
        num.value=0
        p = multiprocessing.Process(target=func, args=(num,))
        p.start()

        print('提交成功,请等待处理')
        return '提交成功,请等待处理'

    if not num.value:
        print('正在执行,请等待')
        return '正在执行,请等待'

    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True, port=6006)

多线程

import threading
from flask import Flask
import time

app = Flask(__name__)
g_num = 1

def func(data):
    global g_num

    print('子线程1:', g_num)
    time.sleep(5)
    print('睡眠完成')
    # a=1/0
    g_num = 1  # 子进程改变数值的值,主进程跟着改变
    print('子线程2:',g_num)
    # return '子线程处理完成'

@app.route('/')
def hello_world():
    global g_num

    print('主进程:',g_num)

    if g_num:
        g_num=0
        # t1 = threading.Thread(target=func)
        t1 = threading.Thread(target=func, args=(6,))
        t1.start()
        # time.sleep(1)
        print('提交成功,请等待处理')
        return '提交成功,请等待处理'

    if not g_num:
        print('正在执行,请等待')
        return '正在执行,请等待'

    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True, port=6006)

你可能感兴趣的:(Python,flask,python,后端)