【发布时间】:2020-01-27 09:28:09
【问题描述】:
我是 Python 的初学者,在父脚本和分叉子脚本之间共享变量时遇到问题。
objectif如下
主脚本必须从 API 调用中获取任务并在子进程中运行它们。然后它会减少可用 CPU 的计数器以避免资源饱和,并在有可用 CPU 时获取新任务。我还想在子进程完成时增加计数器,但我无法让它工作。
这是我的脚本主要功能
def main():
while True:
global availables_cpu
print("Got %s availables CPU requesting new job" % availables_cpu)
response = requests.get("http://" + url_api + "/api.php?action=get&ressources=" + str(availables_cpu))
data = json.loads(response.text)
job_path = data["hash"]
if job_path is None :
print("Nothing to do, waiting for a while")
else:
dir = job_path.rstrip()
if int(data["cpu"]) <= availables_cpu:
availables_cpu -= int(data["cpu"])
newpid = os.fork()
if newpid == 0:
code = child()
availables_cpu += int(data["cpu"])
os._exit(code)
else:
time.sleep(3)
print("Parent")
child() 函数只是获取数据并在子进程中运行脚本
我不确定执行此操作的最佳方法,我愿意接受任何建议。
【问题讨论】:
-
每个进程都在自己的内存空间中运行,所以不能共享变量,因为没有共享内存。
-
我认为这是你需要的docs.python.org/3.7/library/…,请注意关于非原子增量的警告。