【发布时间】:2019-12-09 14:27:09
【问题描述】:
我有一个不重复的进程(Selenium Webdriver),它可以运行长达 100 分钟甚至更长时间。我的问题是我想不出一种在过程中间暂停的方法。
我一直在尝试使用事件来解决它,但到目前为止,我只是找到了解决方案,这将在 迭代之后停止该过程,我一直认为理论上可以在每一行代码之后放置一个查询,询问是否将事件设置为继续处理,但这将非常困难,因为我在该函数中有大约数千行代码。
在这个例子中,我也一直在尝试通过一个事件暂停主进程,该事件是从另一个进程调用的,当用户给出输入(例如 Enter)时开始,但进程没有连接,因此 evet_func 是仍在继续运行。
import time
import multiprocessing
def event_func(num):
print('\t%r has started' % multiprocessing.current_process())
for i in range(1000):
time.sleep(0.1)
print(i)
print('\t%r has finished' % multiprocessing.current_process())
def event_wait(event):
print("Event Wait called")
event.wait()
print("Event wait finished")
if __name__ == "__main__":
event = multiprocessing.Event()
m = multiprocessing.Process(target=event_func, args=(1,), daemon=True)
m.start()
x = input("Waiting for input: ")
p = multiprocessing.Process(target=event_wait, args=(event,))
p.start()
print ('main is sleeping')
time.sleep(2)
print ('main is setting event')
event.set()
m.join()
我的预期结果是该过程在函数中间是可暂停的,而不是在迭代之后。
【问题讨论】:
标签: python tkinter python-multiprocessing