Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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_Multiprocessing_Python Multiprocessing - Fatal编程技术网

加入后重新启动Python多处理

加入后重新启动Python多处理,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我正在使用python多处理进程。为什么我不能在进程退出并加入后启动或重新启动它。进程结束了,但是在实例化的类中,在进程结束并且我进行了连接之后,popen没有设置为None。如果我尝试重新开始,它会告诉我,我无法启动一个过程两次。从你的问题中,我们可以猜测,你在说什么。您是否正在使用子流程?你如何开始你的过程?通过调用call()或Popen() 万一我猜对了: 只需从子流程调用中保留args列表,然后再次调用该命令重新启动流程。子流程的实例(例如Popen实例)表示正在运行的流程(具有one

我正在使用python多处理进程。为什么我不能在进程退出并加入后启动或重新启动它。进程结束了,但是在实例化的类中,在进程结束并且我进行了连接之后,popen没有设置为None。如果我尝试重新开始,它会告诉我,我无法启动一个过程两次。

从你的问题中,我们可以猜测,你在说什么。您是否正在使用
子流程
?你如何开始你的过程?通过调用
call()
Popen()

万一我猜对了:

只需从
子流程调用中保留
args
列表,然后再次调用该命令重新启动流程。子流程的实例(例如
Popen
实例)表示正在运行的流程(具有onePID),而不是可以多次运行的抽象应用程序

e、 g:


来自Python多处理文档

开始()

启动流程的活动

每个进程对象最多只能调用一次。它安排在单独的进程中调用对象的run()方法

流程对象只能运行一次。如果需要重新运行相同的例程(目标参数),则必须实例化一个新的流程对象

这是因为流程对象封装了唯一的OS实例

提示:不要使用Python线程和进程对象的内部构件,否则可能会受到严重伤害。
您看到的_popen属性是Process对象用来理解子OS进程何时消失的哨兵。它实际上是一个管道,用于阻止join()调用,直到进程不终止。

是否尝试执行
进程。是否处于活动状态()
以查看其是否处于活动状态?OP可能使用的是
多处理
库,而不是
子进程
args = ['python', 'myscript.py']
p = Popen(args)
p.wait()
p = Popen(args)
...