是否有相当于 Python 的 Rust 多处理模块

问题描述 投票:0回答:0

在Python中有一个多处理模块,你可以在子进程中运行一个函数, 我知道你在想什么,但是 Rust 没有 Gil,线程不会为你做同样的事情吗?

不,因为我有使用不同的 odbc 驱动程序同时连接到不同数据库的任务,所以很多 odbc 驱动程序都不是线程安全的, (我不知道这是否是线程安全的,但如果我在不同的线程中同时运行2个不同的驱动程序,由于某种原因,这不起作用)

请不要关注 ODBC 驱动程序部分,这是一个很长的故事,并且它特定于 ODBC,我确信其他人可能出于各种原因需要在进程中而不是线程中运行 Rust 函数,其中大多数不会有效,但其中一些会,这有点超出了这个问题的重点

所以我需要在单独的内存范围(也称为进程)中运行每个并行任务。

我不介意在进程和子\父进程之间传递值和变量的复杂性,我想我知道如何做到这一点(至少如何使用Redis做到这一点)

在Python中这是使用这个完成的:

from multiprocessing import Process

    def f(name):
        print('hello', name)
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()

注意“Process”中的参数“target”如何采用函数。

我知道 Rust 也有 Process,但它不需要 Rust 函数在单独的进程中运行,它需要一个二进制文件,这可能有用,但开发起来更困难,我必须为此编译一个单独的 Rust 项目作为二进制文件工作,而如果它可以运行一个功能

multithreading rust concurrency multiprocessing thread-safety
© www.soinside.com 2019 - 2024. All rights reserved.