flask socketIO多处理值

时间:2018-06-11 01:25:26

标签: flask multiprocessing shared-memory

我正在尝试使用多处理值来更新数据元素 多处理功能。数据值不会多次更新。我已阅读以下页面和其他问题: 我想知道Flask app是否会干扰......?

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
Bootstrap(app)
socketio = SocketIO(app)
mp_date = Value('f', 0.0, lock=False)  

if __name__ == '__main__':
operation_run = multiprocessing.Process(target=sys_operations,args=((parent_conn, child_conn),True, mp_date)) 

operation_run.start()
socketio.run(app, host='0.0.0.0', debug=True,use_reloader=False)

In the multiprocessed function 
def orerry_operations(pipe, first_run, mp_date):
….
    mp_date.value=moving_date  #this is the update that does not work,
                moving_date is a float
    print 'mp_date obj: ' + str(mp_date)
    print 'mp_date  ' + str(mp_date.value)
    print 'moving_date  ' + str(moving_date)

the print results are:
mp_date obj: c_float(581948928.0)
mp_date  581948928.0
moving_date  581948957.797

mp_date obj: c_float(581948928.0)
mp_date  581948928.0
moving_date  581948959.814

mp_date obj: c_float(581948992.0)
mp_date  581948992.0
moving_date  581948961.83

这是一个烧瓶,wtf,socketio,bootstrap,python 2.7应用程序。 除数据值共享外,所有工作都有效。

{{1}}

如您所见,mp_date值未更新。 这似乎是第一次, 然后不是 函数连续运行时我不加入。     帮助

1 个答案:

答案 0 :(得分:0)

您需要在函数开头指定orerry_operations:

global mp_date