我处理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秒钟。我使用count
中的ba.py
来维护计数。在第一次调用它之后,它应该递增到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秒后没有休眠。
有关如何解决此问题的任何建议?
答案 0 :(得分:1)
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()]
...