使用PRAW,在我的主线程中创建了一个Reddit实例:
import praw
reddit = praw.Reddit(client_id='my client id',
client_secret='my client secret',
user_agent='my user agent')
Run Code Online (Sandbox Code Playgroud)
哪个工作正常。
随着代码的增加,我创建了各种模块(.py文件),它的主要.py文件,其中main是进口他们进入。
有时,这些其他模块需要访问上述实例,而不是创建只会浪费资源或API速率限制的新实例。
在Python 3.6中,处理此问题的适当方法是什么?全局变量只是答案吗?如果要调用很多函数,将其作为函数参数传递数十次似乎也不太组织。
您可以将该代码放在自己的名为reddit的模块中
reddit.py:
import praw
reddit = praw.Reddit(client_id='my client id',
client_secret='my client secret',
user_agent='my user agent')
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它。
some_other_module.py
import reddit
for submission in reddit.reddit.subreddit('learnpython').hot(limit=10):
print(submission.title)
Run Code Online (Sandbox Code Playgroud)
Python只会在第一次导入时运行模块中的代码,然后在内部保留模块,以便在以后的导入中引用相同的模块。
您可以看到的一个小示例是创建以下模块。
py
import b # j.x is now 4
import c # j.x is now 9
import j # j.x is still 9
print(j.x) # 9 is printed out
Run Code Online (Sandbox Code Playgroud)
日元
x = 1
Run Code Online (Sandbox Code Playgroud)
b.py
import j
j.x += 3
Run Code Online (Sandbox Code Playgroud)
py
import j
j.x += 5
Run Code Online (Sandbox Code Playgroud)
数字9将被打印出来,因为x在首次导入时才被设置为1。将来对模块的引用都使用相同的x。
在您的情况下,您可以具有main.py和tdepend.pyimport reddit.py,并且它们都将使用完全相同的reddit对象。
仅供参考,您可以使用下面来看看你是达到reddit的的API限制的接近:praw.models.Auth(reddit).limits()。
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |