Python多处理-进程终止(不能启动一个进程两次)
有人能告诉我为什么下面的代码给出错误“不能启动一个进程两次”吗?据我估计,p1和p2应该已经被p.terminate()命令强制关闭了 编辑:添加了更多的代码来提供上下文-想要给出一个简单的示例,但忽略了while循环Python多处理-进程终止(不能启动一个进程两次),python,python-3.x,multiprocessing,python-multiprocessing,Python,Python 3.x,Multiprocessing,Python Multiprocessing,有人能告诉我为什么下面的代码给出错误“不能启动一个进程两次”吗?据我估计,p1和p2应该已经被p.terminate()命令强制关闭了 编辑:添加了更多的代码来提供上下文-想要给出一个简单的示例,但忽略了while循环 import time import os from multiprocessing import Process import datetime def a(): print ("a starting") time.sleep(30) print ("
import time
import os
from multiprocessing import Process
import datetime
def a():
print ("a starting")
time.sleep(30)
print ("a ending")
def b():
print ("b starting")
time.sleep(30)
print ("b ending")
morning = list(range(7,10))
lunch = list(range(11,14))
evening = list(range(17,21))
active = morning + lunch + evening
if __name__=='__main__':
p1 = Process(target = a)
p2 = Process(target = b)
while True:
while (datetime.datetime.now().time().hour) in active:
p1.start()
p2.start()
time.sleep(5)
p1.terminate()
p2.terminate()
time.sleep(5)
else:
print ("Outside hours, waiting 30 mins before retry")
time.sleep(1800)
它说一个过程不能启动两次。这正是您在终止后再次调用
p1.start()
和p2.start()
时所做的。试着像一开始那样重新创建它们
p1.terminate()
p2.terminate()
time.sleep(5)
p1 = Process(target = a)
p2 = Process(target = b)
p1.start()
p2.start()
为什么有两个
p1.start()
和p2.start()
?哦,对不起!有一个while循环封装了它,在一天中的特定时间反复运行代码!我没有意识到你必须不断地重新定义流程。我将错误“您无法启动一个进程两次”解释为“您无法重新运行已在运行的进程”,因此认为terminate()存在错误。4年后,我不得不一次又一次地重新定义流程,这似乎不合逻辑,这帮了我的忙,谢谢!