Python 我应该在启动函数的所有函数调用中使用多处理吗?

Python 我应该在启动函数的所有函数调用中使用多处理吗?,python,multiprocessing,Python,Multiprocessing,我不知道我是否在标题中明确表达了我的意图。欢迎您改进。 让我们看看这个例子: 我希望我的站点A的用户可以执行一些操作来更改站点B中的某些数据。 因此,我在站点B中模拟登录和两个操作。这意味着当用户通过站点a帐户登录我的站点时,我应该发布3条帖子。 我有三个功能: def login(name,pwd): .... token = get_token(name,pwd) set_config(token) open_something(token) ....

我不知道我是否在标题中明确表达了我的意图。欢迎您改进。
让我们看看这个例子:
我希望我的站点A的用户可以执行一些操作来更改站点B中的某些数据。
因此,我在站点B中模拟登录和两个操作。
这意味着当用户通过站点a帐户登录我的站点时,我应该发布3条帖子。
我有三个功能:

def login(name,pwd):
    ....
    token = get_token(name,pwd)
    set_config(token)
    open_something(token)
    ....

def set_config(toekn):
    ....

def open_something(toekn):
    ....
我知道线程建模,但我必须构建一个类来使用它,这似乎有点不方便和不优雅。 我知道互斥,如下所示,但它似乎一次只运行一个线程

def login(name,pwd):
    mutex.acquire()
    try:
        print('Do some stuff')
    finally:
        mutex.release()
所以我想我必须使用多重处理。
我想知道如果我只使用下面的代码,它是否会工作。或者我应该如何编写代码

def login(name,pwd):
    ....

if __name__ == '__main__':
    p = Process(target=login, args=(name,pwd))
    p.start()
    p.join()
应该有用。但这和

if __name__ == '__main__':
    p = Thread(target=login, args=(name,pwd))
    p.start()
    p.join()
if __name__ == '__main__':
    login(name, pwd)
这和

if __name__ == '__main__':
    p = Thread(target=login, args=(name,pwd))
    p.start()
    p.join()
if __name__ == '__main__':
    login(name, pwd)
应该有用。但这和

if __name__ == '__main__':
    p = Thread(target=login, args=(name,pwd))
    p.start()
    p.join()
if __name__ == '__main__':
    login(name, pwd)
这和

if __name__ == '__main__':
    p = Thread(target=login, args=(name,pwd))
    p.start()
    p.join()
if __name__ == '__main__':
    login(name, pwd)

我不明白,为什么你认为你需要在一个单独的过程中登录?至于你在考虑什么,我认为应该行得通。你试过了吗?@Blckknght是的,但结果并不像我期望的那样。你需要告诉我们你的期望和正在发生的事情。我们不会读懂你的心思,猜出发生了什么事。@Blckknght我真的太粗心了。在再次检查我的代码后,我发现了问题——我的代理服务只运行了一个带有资源锁的线程。我不明白,为什么你认为你需要在单独的过程中登录?至于你在考虑什么,我认为应该行得通。你试过了吗?@Blckknght是的,但结果并不像我期望的那样。你需要告诉我们你的期望和正在发生的事情。我们不会读懂你的心思,猜出发生了什么。@Blckknght我真的太粗心了。在再次检查我的代码后,我发现了问题-我的代理服务只运行了一个带有资源锁的线程。是的,你是对的。在再次检查我的代码后,我发现了问题-我的代理服务只运行了一个带有资源锁的线程。是的,你说得对。在再次检查我的代码后,我发现了问题——我的代理服务只运行了一个带有资源锁的线程。