gpt4 book ai didi

python - 一点点编程数学

转载 作者:太空宇宙 更新时间:2023-11-04 09:15:03 25 4
gpt4 key购买 nike

只是想知道是否有人可以帮助我解决我遇到的一些编程数学问题。

我要创建的是用于 Nuke (vfx) 的提交脚本(使用 python 和 .bat)。我遇到的问题是我不知道如何将剩余的帧添加到已计算的堆栈中。

更清楚...

在 Nuke 中,我必须渲染 20 帧。我有 16 个线程。 Nuke 仅使用 1 个线程。我想编写一个脚本,获取帧数并将其除以线程数,然后使用 python 写出一个 bat 文件。问题是当我有剩余时。我想取余数并将其应用回渲染堆栈。

例子(第一个循环)

thread1 = 1 frame
thread2 = 1 frame
thread3 = 1 frame
thread4 = 1 frame
thread5 = 1 frame
thread6 = 1 frame
...
thread16 = 1 frame

完成此操作后...余数为 4。我希望将余数分配给线程。所以...

例子(第二个循环)

thread1 = 2 frame
thread2 = 2 frame
thread3 = 2 frame
thread4 = 2 frame
thread5 = 1 frame
thread6 = 1 frame
...
thread16 = 1 frame

这 4 个被添加到前几个线程中,总共 20 帧。

我将非常感谢任何人提供的任何帮助、提示和评论。 :)

谢谢

最佳答案

这是 Bresenham algorithm 的经典用法:

def partition(lst, n):
increment = len(lst) / float(n)
last = 0
i = 1
results = []
while last < len(lst):
idx = int(round(increment * i))
results.append(lst[last:idx])
last = idx
i += 1
return results


for i, frames in enumerate(partition(range(20),16)):
if len(frames)>1:
print 'thread'+str(i+1),'=', len(frames),'frames'
else:
print 'thread'+str(i+1),'=', len(frames),'frame'

分区位来自this answer .

它打印:

thread1 = 1 frame
thread2 = 2 frames
thread3 = 1 frame
thread4 = 1 frame
thread5 = 1 frame
thread6 = 2 frames
thread7 = 1 frame
thread8 = 1 frame
thread9 = 1 frame
thread10 = 2 frames
thread11 = 1 frame
thread12 = 1 frame
thread13 = 1 frame
thread14 = 2 frames
thread15 = 1 frame
thread16 = 1 frame

你也可以使用 Mark Dickinson's solution如果您不介意前端加载的两个框架线程。

那么你有:

def partition(lst, n):
q, r = divmod(len(lst), n)
indices = [q*i + min(i, r) for i in xrange(n+1)]
return [lst[indices[i]:indices[i+1]] for i in xrange(n)]

打印:

thread1 = 2 frames
thread2 = 2 frames
thread3 = 2 frames
thread4 = 2 frames
thread5 = 1 frame
thread6 = 1 frame
thread7 = 1 frame
thread8 = 1 frame
thread9 = 1 frame
thread10 = 1 frame
thread11 = 1 frame
thread12 = 1 frame
thread13 = 1 frame
thread14 = 1 frame
thread15 = 1 frame
thread16 = 1 frame

关于python - 一点点编程数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com