运行时错误:无法启动新线程,但无法启动多线程python

2024-10-03 02:38:11 发布

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

所以我试图在AWS的一个大实例上运行一个相当大的程序。这个程序在44个不同的表格中循环,都在csv中,并将每个表格与其他表格进行比较。为了做到这一点,该程序基本上是计算每个表的列相对于另一个表的列的所有可能排列组合,最大为3,并对使用所述列组合链接两个表时数据的相关性进行一些分析。我主要是用熊猫来完成这项任务

我已使程序瘫痪,因此我有一个用于每个表比较的流程池,即表a与表B的比较,a->;C、 A->;D、 然后B->;C、 B->;D、 等等。总共约有1400人

所有这一切都很好,但通常,在我的第300个进程前后,我会收到一个错误,关于无法启动新线程,它会声明我有500多个线程。我的困惑在于我不是多线程,为什么我有这么多线程?此外,我甚至尝试将池限制为只有10个并发进程。我很困惑,当我甚至没有创建线程时,为什么只有10个进程以某种方式使用500个线程

我确信这只是我对python如何工作的理解不足,因此任何输入都将不胜感激

在这里你可以看到我的paralization

pool = mp.Pool(10) 
for filename in os.listdir("inputFiles"):
    for subFileName in  os.listdir("inputFiles"):
        if subFileName != filename and (str(subFileName + filename) not in ComparedTables):
            
            ComparedTables.append(str(filename + subFileName))
            TABLEA = filename.split(".")[0]
            TABLEB = subFileName.split(".")[0]
            
            print("Creating pocess for: " + TABLEA + " -> " + TABLEB)
            total.append(1)
            pool.apply_async(Paralizer, args=(TABLEA, TABLEB, DataMap,doneCount,total,))              


pool.close()
pool.join()

Tags: ingt程序for进程osfilename线程