Python线程锁

Python线程锁,python,locking,Python,Locking,我使用Lock()编写了一个线程化python代码(在全局变量中定义)。线程应该首先执行一些代码,然后在完成之后,可以再次调用它。 代码如下所示: with lock: pid = os.spawnlp(os.P_NOWAIT, "command", "command", "args") os.system("some command") os.waitpid(pid, 0); 问题是锁可以工作,但是当再次调用线程时,子线程会退出(它应该正在运行)。除了使用lock之外,我在代码中看不到

我使用Lock()编写了一个线程化python代码(在全局变量中定义)。线程应该首先执行一些代码,然后在完成之后,可以再次调用它。 代码如下所示:

with lock:
 pid = os.spawnlp(os.P_NOWAIT, "command", "command", "args")
 os.system("some command")
 os.waitpid(pid, 0);

问题是锁可以工作,但是当再次调用线程时,子线程会退出(它应该正在运行)。

除了使用
lock
之外,我在代码中看不到任何与多线程相关的内容。它只是一个最低限度的代码。。我用“start\u new\u thread”调用该线程,我希望生成的子线程将保留,但当再次调用该线程时,它将退出。另外一个线程将不会进入带锁的
:block,直到第一个线程离开它。由于您有
os.waitpid(pid,0)
,那么在子线程终止后,第一个线程将离开块。感谢您到目前为止的回复。但是,我想做的是在后台运行进程并等待它(它应该继续运行很长一段时间),然后当我再次调用线程时,另一个子进程也应该生成并运行,因此,多个child应该同时运行,但不能一个接一个地同时运行。在这种情况下,我看不到使用
lock
的意义。移除它,看看会发生什么。如果线程中执行的代码未修改其他线程可见的变量,则不会出现任何问题。除了使用
锁定
之外,我在代码中看不到任何与多线程相关的内容。这只是一个简单的代码。。我用“start\u new\u thread”调用该线程,我希望生成的子线程将保留,但当再次调用该线程时,它将退出。另外一个线程将不会进入带锁的
:block,直到第一个线程离开它。由于您有
os.waitpid(pid,0)
,那么在子线程终止后,第一个线程将离开块。感谢您到目前为止的回复。但是,我想做的是在后台运行进程并等待它(它应该继续运行很长一段时间),然后当我再次调用线程时,另一个子进程也应该生成并运行,因此,多个child应该同时运行,但不能一个接一个地同时运行。在这种情况下,我看不到使用
lock
的意义。移除它,看看会发生什么。如果线程中执行的代码没有修改其他线程可见的变量,那么就不会有问题。