用于数据库调用的 Java 多线程与 Python 多线程 [关闭]

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

我想深入了解哪种语言使用多线程提供更好的性能。

因为我有一个用例,我必须对一个数据库函数(Oracle DB)进行独立/异步调用,该函数将一个键列作为输入。

所以,之前在DB函数中有一个for循环,它用来顺序迭代。为了提高性能,我们想测试多线程。 必须选择 Java 或 Python。

Java 多线程 - 使用 ExecutorService 接口和 UCP 进行连接池。

Python 多线程 - 使用线程库和每个并行线程的新连接。下面是代码 FYR.

    MY_List=[1,2,3,4,5]
    thread_list=[]
    for i in range(5):
        curr=MY_List[i]
        t=threading.Thread(target=call_db_funcn,args=[curr]);
        t.start()
        thread_list.append(t)

    for thread in thread_list:
        thread.join()

Python-每个数据库调用需要大约 11 毫秒来处理,所有线程花费的总时间约为 13 毫秒。

Java- 每个数据库调用需要大约 12 毫秒来处理,所有线程花费的总时间约为 12.444 毫秒。

我读到 Java 在多线程方面表现更好,而 Python 在多处理方面表现出色。另外,python 的 GIL 在多线程的情况下并没有好处。 但是,根据上述结果,我看不出这两种语言有太大差异。

注意:这两个操作都是在4core CPU机器上执行的,线程池大小为5,DB调用总数为5.

我想讨论性能比较,使用多线程时 Python 在生产中遇到的实际问题,以及我可能遗漏的其他方面。

python java multithreading
© www.soinside.com 2019 - 2024. All rights reserved.