我想深入了解哪种语言使用多线程提供更好的性能。
因为我有一个用例,我必须对一个数据库函数(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 在生产中遇到的实际问题,以及我可能遗漏的其他方面。