Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种安全的方法可以从python中的线程创建子进程?_Python_Multithreading - Fatal编程技术网

有没有一种安全的方法可以从python中的线程创建子进程?

有没有一种安全的方法可以从python中的线程创建子进程?,python,multithreading,Python,Multithreading,我正在使用一些现有代码,这些代码创建了许多不同的工作线程,然后这些工作线程通过子进程/多进程调用一些shell脚本。从我所看到的情况来看,这是不允许的,因为互斥可以在exec发生之前被嵌入子进程的解释器中。这是一个合理的担忧吗?如果是这样的话,是否有某种python原语可以做正确的事情并执行fork/exec,而不会在其间使用任何不安全的东西 谢谢我不这么认为。您完全可以使用日志记录模块创建死锁,该模块是线程安全的,因此可以执行一些锁定和子进程/多进程处理,所以我想说python并没有为您处理这

我正在使用一些现有代码,这些代码创建了许多不同的工作线程,然后这些工作线程通过子进程/多进程调用一些shell脚本。从我所看到的情况来看,这是不允许的,因为互斥可以在exec发生之前被嵌入子进程的解释器中。这是一个合理的担忧吗?如果是这样的话,是否有某种python原语可以做正确的事情并执行fork/exec,而不会在其间使用任何不安全的东西


谢谢

我不这么认为。您完全可以使用日志记录模块创建死锁,该模块是线程安全的,因此可以执行一些锁定和子进程/多进程处理,所以我想说python并没有为您处理这个问题。我很惊讶C中没有实现某种模块/原语,它会立即背对背地调用fork和exec,这不会造成死锁。多处理所做的远不止是生成一个子进程,因此不可能像您所想的那样。这是叉子的一个设计缺陷。处理这个问题最简单的方法是避免分叉有多个线程的进程。你有没有就此得出结论。有时,我也会因为线程死锁而遇到同样的问题。多处理模块对于me来说不是一个好选项,因为子作业参数太大或不可酸洗