如何通过导入增加另一个脚本中的变量?

How to increment a variable in another script through importing?

我处理 2 个文件,比如 ba.py 和 2.py

ba.py:

import sys

count  = 1 # This is global count

def callme():
    pass
    # Doing Some operation

2.py

import ba
print ba.count ## This is working fine
ba.callme() ## This is also working fine.

我正在 运行 自动化,工作是这样的:

for i in $(find /home/some/SomeElse/HeyMore -type f); do python 2.py $i; done

此命令的作用是从指定的文件夹中获取文件并将其作为参数传递给 2.py 中的函数。

在内部,我想打开 python 中的文件并执行一些操作。但是,我不想让我的系统超载,所以在完成 10 个作业后我想睡 10 秒。我在 ba.py 中使用 count 维护计数。第一次调用后,应该递增到2,以此类推。

但是,当它达到 10 时它应该休眠,因为我的逻辑如下所示。

print ba.count
ba.count = ba.count + 1  ## Here increment should happen
if ba.count % 10 == 0:
        time.sleep(10)
else:
        ba.callme()

每次我 运行 这个自动化脚本,我只看到 1 的,并且脚本在 10 秒后没有休眠。

关于如何解决这个问题有什么建议吗?

2.py 是每个文件的 运行,并且不知道在前一个 运行 中设置的计数器。一种解决方案是仅 运行 2.py 一次并通过管道输入您要处理的文件:

import sys
import time

def callme(filename):
    print filename

for count,line in enumerate(sys.stdin):
    if count and not(count % 10):
        print('sleeping')
        time.sleep(1) # I got bored.... make that 10
    callme(line.strip())

你的脚本变成了

find /home/some/SomeElse/HeyMore -type f | python 2.py

如果您不想 find 闲逛抽取数据,您可以一次拉取所有文件然后处理它们

filenames = [line.strip() for line in sys.stdin.readlines()]
...