是否可以跨Python子访问共享资源(日志、数据库、文件等)?

是否可以跨Python子访问共享资源(日志、数据库、文件等)?,python,subprocess,Python,Subprocess,我用Python编写了一个大型程序,它一个接一个地调用许多自定义模块的main方法。父脚本创建一些公共资源,如日志实例、数据库游标和文件引用,然后将这些资源传递给各个模块。问题是,我现在需要通过子流程调用其中一些模块。请检查\u output,我不知道如何在这些模块之间共享上述资源。这可能吗?你问的问题没有一般性的答案。可能有习惯的方式;e、 g.在Linux上,很多东西实际上都是文件描述符,有很多方法可以将它们传递给子进程,但这不是很好的Pythonic:您必须在子进程的命令行上以数字的形式给

我用Python编写了一个大型程序,它一个接一个地调用许多自定义模块的
main
方法。父脚本创建一些公共资源,如日志实例、数据库游标和文件引用,然后将这些资源传递给各个模块。问题是,我现在需要通过
子流程调用其中一些模块。请检查\u output
,我不知道如何在这些模块之间共享上述资源。这可能吗?

你问的问题没有一般性的答案。可能有习惯的方式;e、 g.在Linux上,很多东西实际上都是文件描述符,有很多方法可以将它们传递给子进程,但这不是很好的Pythonic:您必须在子进程的命令行上以数字的形式给出它们,然后子进程围绕文件描述符重新构建一个文件对象(请参见
file.fileno()
os.fdopen()
对于常规文件;我不确定是否有其他方法可以在Python中实现常规文件以外的其他功能

在您的问题中,如果一切都在Python中,为什么您需要创建子流程而不是在单个流程中完成

如果您确实需要,那么一种通用的方法是使用
os.fork()
而不是
子流程
模块:您需要对流程进行fork(这将创建它的两个副本);在父副本中,等待子副本终止;在子副本中,继续运行特定的子模块。其优点是,子进程在结束时终止,这会清理它所做的事情,同时从父进程拥有的几乎所有内容(文件描述符、数据库游标等)的副本开始