Multithreading (Python3)我可以在多线程程序的线程内生成单个/多个子进程吗?

Multithreading (Python3)我可以在多线程程序的线程内生成单个/多个子进程吗?,multithreading,multiprocessing,python-3.5,Multithreading,Multiprocessing,Python 3.5,我有一个用例,其中一个程序产生多个线程,即。一个用于网络通信,一个用于修改两个JSON文件,另一个用于查询和写入数据库。这些都是在多个线程中生成的,因为它们都是I/O绑定的任务 网络通信线程、JSON文件处理程序和数据库处理程序的代码将由我编写。如果像我使用多核机器一样使用多个进程,那么数据库处理可以显著优化 我想从Python的角度来理解,在一个线程中生成多个进程将如何工作(如果可以的话)?在进一步搜索之后,我找到了一个页面,它很好地回答了我自己的问题 如上所述,从线程开始进程不是一个好主意。

我有一个用例,其中一个程序产生多个线程,即。一个用于网络通信,一个用于修改两个JSON文件,另一个用于查询和写入数据库。这些都是在多个线程中生成的,因为它们都是I/O绑定的任务

网络通信线程、JSON文件处理程序和数据库处理程序的代码将由我编写。如果像我使用多核机器一样使用多个进程,那么数据库处理可以显著优化


我想从Python的角度来理解,在一个线程中生成多个进程将如何工作(如果可以的话)?

在进一步搜索之后,我找到了一个页面,它很好地回答了我自己的问题

如上所述,从线程开始进程不是一个好主意。线程中获取的互斥体将被复制,无法在子进程中释放。此外,还可能发生许多数据竞争情况


然而,我喜欢所罗门的想法,张贴在评论(针对我的问题)中,我会尝试继续,或者,可能会改变我的架构。

在进一步搜索后,我发现一个页面可以很好地回答我自己的问题

如上所述,从线程开始进程不是一个好主意。线程中获取的互斥体将被复制,无法在子进程中释放。此外,还可能发生许多数据竞争情况


然而,我喜欢Solomon在评论中提出的想法(针对我的问题),我会继续尝试,或者,可能会改变我的架构。

Re,“…在线程内部”。线程没有“内部”,但这里有一个有趣的问题:Python程序在创建了一个或多个新线程后能否安全地创建子进程?我不知道这个问题的答案,但我知道在不久的过去,如果程序在创建新线程后创建了新进程,那么在某些版本的Linux上运行的任何程序都会出现问题。我曾经在一个产品上工作,主程序首先创建了一个单线程的“助手”在创建一大堆线程之前先处理。此后,当主程序需要额外的新进程时,它会要求单线程助手创建它们。该体系结构的全部目的是绕过当时每个人都在使用的Linux内核的限制。感谢Solomon,我喜欢helper process.Re的想法,“…在线程内部”。线程没有“内部”但这里有一个有趣的问题:Python程序在创建了一个或多个新线程之后,能否安全地创建子进程?我不知道这个问题的答案,但我知道在不久的过去,如果程序在创建新线程后创建了新进程,那么在某些版本的Linux上运行的任何程序都会出现问题。我曾经在一个产品上工作,主程序首先创建了一个单线程的“助手”在创建一大堆线程之前先处理。此后,当主程序需要额外的新进程时,它会要求单线程助手创建它们。该体系结构的全部目的是绕过当时每个人都在使用的Linux内核的限制。