通过多处理在python脚本之间传递数据

2024-10-01 07:41:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Heroku上使用Flask在两个python脚本之间传递数据,我认为多处理是最好的策略,但我遇到了一个错误。我从另一个类似的问题中选取了一个simple script,并将其修改为一个示例

基本思想是,在我的脚本中,一个脚本从用户处获取字符串数据(如“有哪些酒店可用?”)。第二个脚本运行flask,解释字符串(“有哪些酒店?”)以搜索数据库

在下面的示例中,脚本2遇到错误,因为调用它时“字母”未定义。这里没有显示,但我还尝试在第一个脚本中创建一个全局变量,并将其传递给f函数(这也会导致错误,可能不是最好的策略)

获取_user_input.py:

from multiprocessing import Process,Queue,Pipe
from send_to_flask import f

if __name__ == '__main__':
    parent_conn,child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print(parent_conn.recv())   # prints "Hello"

将_发送到_flask.py:

from multiprocessing import Process,Pipe
import random
import string

def randomString(stringLength=8):
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(stringLength))

def f(child_conn):
    #msg = "Hello"
    msg = letters
    child_conn.send(msg)
    child_conn.close()

我还尝试将函数嵌入到另一个

def randomString(stringLength=8):
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(stringLength))
    f(child_conn, letters)

问题在于,一个函数存储字符串值,但将该值传递给字符串值的函数(f函数)无权访问该对象。我想指出的是,在我的实际程序中,这两个函数同时运行,因此上面的示例可能不是我问题的精确副本(字符串将是静态的,外部给定的)。我希望我能让这个问题很容易回答,让我知道我是否能让它变得更好


Tags: 函数字符串fromimport脚本childflask示例