【发布时间】:2022-01-10 06:10:27
【问题描述】:
我使用了多处理,但我不知道该怎么做
逻辑:变量 sign 等于 0,使用名为 timer 的函数计数 20 秒,然后每秒检查 sign 是否等于 1打印一些东西并打破循环,同时使用一个名为 waiting 的函数等待来自另一个库的输入,例如“discord”或“socket”,所以如果输入等于我的键翻转变量符号为 1 并影响第一个函数 timer
import multiprocessing
from time import sleep
sign = 0
def timer():
for s in range(20):
if sign == 1: # if the input is equal to the secret key then break the timer
print("Yes!")
break
else:
sleep(1) #if not then continue timing
def waiting():
# maybe it waits for an input or a message from "discord or whatsapp"
if message == "secret_key":
sign = 1
p1 = multiprocessing.Process(target=timer)
p2 = multiprocessing.Process(target=waiting)
p1.start()
p2.start()
【问题讨论】:
-
请为您的应用程序使用带条件变量的互斥锁。您必须使用信号量或使用共享资源的互斥锁。
-
你能解释一下互斥锁或将我重定向到一个链接
-
实际上需要一两天时间。但是了解多线程和多处理概念并更好地了解您到底想做什么总是更好。因此,在这里我将为您提供一个链接,它可以为您提供完整的概述。 toptal.com/python/…
-
其实这种情况下,只需要使用
multiprocessing.Event()即可。由于您的程序只是测试是否发生了“事件”,因此您可以避免使用信号量或互斥体。虽然你应该知道它们是什么。
标签: python python-3.x multiprocessing python-multiprocessing shared-variable