我有几个回调函数,我想启动多个进程,并通过父进程的信号终止它们.
我目前的做法是创建一个共享c_bool multiprocessing.Value并将其设置为True,然后在创建它时将其分发给我的所有进程.我的进程都使用共享bool运行while循环,如下所示:
while myC_bool: ...keep running...
Run Code Online (Sandbox Code Playgroud)
然后我可以将bool切换到False我的父进程,所有子进程将完成最后一个循环并退出.
许多人都告诉我,并且已经在文档中读到,在使用多处理时应该尝试避免使用共享内存.我被告知避免这种情况的最佳方法是守护进程,给它一个自定义信号处理程序并发送一个sigint/sigterm/etc ......
我的问题是,是专门使用bool来保持循环活动,并且只是从我的父进程改变它的值,并从多个子进程读取一个合适的解决方案,以使我的所有子进程快速安全地终止?我觉得所有孩子只需要查看一个共享bool就可以减少开销,而不是向他们发送x个sigints.
守护是否会成为更好的解决方案?如果是这样,我想帮助理解为什么.
我有一些问题让conda尊重我的代理声明.我已经从conda文档中的示例中复制了代理字符串,并用自己的url替换了url.我还导出了HTTP_PROXY和HTTPS_PROXY以及我知道工作的字符串.我的〜/ .condarc文件看起来像:
proxy_servers:
http: http://<proxyaddress>:<port>
https: https://<proxyaddress>:<port>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑:conda版本:3.14.1
看起来代理字符串实际上很好.最初没有出现的真正问题是,由于我们的公司代理,conda没有使用我需要的ca-cert.我尝试安装软件包时出现的特定错误是:
Error: Connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581): ...
Run Code Online (Sandbox Code Playgroud)