连续执行 Python 中的函数
Executing functions in Python consecutively
我正在尝试将多个函数依次 运行,但我的代码一直卡在循环中。我已经尝试按照 this thread 中的某个人的建议实施 multiprocessing
,但这没有帮助。
我的函数将一张照片发送到 Clarifai 以获取与该照片关联的关键字列表,之后我告诉 PyAutoGUI 如果该列表包含与局部变量匹配的单词,则单击屏幕上的某个位置。这是一个函数的样子:
def p1_click(keyword, p1, app, model):
p1_response = model.predict_by_filename(filename='/Users/raulrodriguez/CODE6_OS/scripts/captcha/saucissons/p1.png')
p1_concepts = p1_response['outputs'][0]['data']['concepts']
for concept in p1_concepts:
clean_list = list(map(lambda s: s.strip(), concept['name']))
while any(word == inflection.singularize(keyword) for word in concept['name'].split()) == True:
pyautogui.click(x=490, y=385)
break
if __name__=='__main__':
p1 = Process(target=p1_click(keyword, p1, app, model))
p1.start()
显然,我正在尝试对几张照片(准确地说是 10 张)执行此操作,方法是复制之前的代码并将 p1
替换为照片编号(即 p2_click
.. . p2.start()
用于名为 p2
的照片),并更改 pyautogui.click
运算符的坐标值。然而,问题是,当我将所有内容放在一起时,我的光标移动到匹配的照片的 pyautogui.click
坐标并不断点击。我打算产生连锁反应,即程序点击匹配照片一次,然后转到下一张。如果有人愿意插话,我将不胜感激。
您遇到的问题在这段代码中:
if __name__=='__main__':
p1 = Process(target=p1_click(keyword, p1, app, model))
p1.start()
特别是这一行p1 = Process(target=p1_click(keyword, p1, app, model))
。更具体地说 target=p1_click(keyword, p1, app, model)
。执行此操作时,只要将函数 p1_click
分配给 target
.
,它就会被调用
这不是通过 multiprocessing
模块调用方法和传递参数的方式。要在多处理模块中传递参数,您可以这样做:
p1 = Process(target=p1_click, args=(keyword, p1, app, model))
您可以在
中获得有关多处理及其使用方法的更多信息
我正在尝试将多个函数依次 运行,但我的代码一直卡在循环中。我已经尝试按照 this thread 中的某个人的建议实施 multiprocessing
,但这没有帮助。
我的函数将一张照片发送到 Clarifai 以获取与该照片关联的关键字列表,之后我告诉 PyAutoGUI 如果该列表包含与局部变量匹配的单词,则单击屏幕上的某个位置。这是一个函数的样子:
def p1_click(keyword, p1, app, model):
p1_response = model.predict_by_filename(filename='/Users/raulrodriguez/CODE6_OS/scripts/captcha/saucissons/p1.png')
p1_concepts = p1_response['outputs'][0]['data']['concepts']
for concept in p1_concepts:
clean_list = list(map(lambda s: s.strip(), concept['name']))
while any(word == inflection.singularize(keyword) for word in concept['name'].split()) == True:
pyautogui.click(x=490, y=385)
break
if __name__=='__main__':
p1 = Process(target=p1_click(keyword, p1, app, model))
p1.start()
显然,我正在尝试对几张照片(准确地说是 10 张)执行此操作,方法是复制之前的代码并将 p1
替换为照片编号(即 p2_click
.. . p2.start()
用于名为 p2
的照片),并更改 pyautogui.click
运算符的坐标值。然而,问题是,当我将所有内容放在一起时,我的光标移动到匹配的照片的 pyautogui.click
坐标并不断点击。我打算产生连锁反应,即程序点击匹配照片一次,然后转到下一张。如果有人愿意插话,我将不胜感激。
您遇到的问题在这段代码中:
if __name__=='__main__':
p1 = Process(target=p1_click(keyword, p1, app, model))
p1.start()
特别是这一行p1 = Process(target=p1_click(keyword, p1, app, model))
。更具体地说 target=p1_click(keyword, p1, app, model)
。执行此操作时,只要将函数 p1_click
分配给 target
.
这不是通过 multiprocessing
模块调用方法和传递参数的方式。要在多处理模块中传递参数,您可以这样做:
p1 = Process(target=p1_click, args=(keyword, p1, app, model))
您可以在