Python posix.waitpid上的进程间通信被阻止

Python posix.waitpid上的进程间通信被阻止,python,multithreading,performance,deadlock,Python,Multithreading,Performance,Deadlock,我有一个python代码,它在使用cProfile进行评测时总是提供以下数据 `299149 function calls (294133 primitive calls) in 39.049 seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 2 36.532 18.266 36.532 18.266 {pos

我有一个python代码,它在使用cProfile进行评测时总是提供以下数据

`299149 function calls (294133 primitive calls) in 39.049 seconds

 Ordered by: internal time

 ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    2   36.532   18.266   36.532   18.266 {posix.waitpid}
   39    1.769    0.045    1.769    0.045 {method 'query' of '_mysql.connection' objects}
    1    0.120    0.120    0.167    0.167 connections.py:62(__init__)
    2    0.083    0.042    0.083    0.042 {method 'rollback' of '_mysql.connection' objects}`
现在,我怀疑代码在posix.waitpid上阻塞的唯一原因是以下函数

    process = Popen(command, stdout=PIPE)
    return process.communicate()
这在本文中得到了很好的解释

executeCommand方法是从代码中的许多地方调用的

在另一个地方,它迭代URL列表并执行curl命令。这可能是非常糟糕的性能瓶颈,因为这将阻碍整个子流程的完成

我的问题是,尽管在代码中多次调用了
executeCommand
函数,但为什么cProfile输出在nCalls列中只显示2


如果罪魁祸首是我怀疑的,是否有解决此问题的方法。

我至少看到两个问题:1。对于
posix.waitpid()
和2,为什么
ncalls
2
。如何提高从多个外部命令(URL)收集输出的代码的性能。这是,这是。更多例子:,或。这是否意味着在python.no中任何时候都只能运行两个连续的批处理过程。要回答第一个问题,。请回答您的问题:“我的问题是,尽管多次调用executeCommand函数,但为什么cProfile输出在nCalls列中仅显示2”提供一个完整的最小代码示例来演示这个问题:我应该能够运行
python-mcProfile your_script.py
,并查看
posix.waitpid
的ncalls equals
2
,而
your_script.py
运行
executeCommand()
两次以上。