我正在将csh脚本转换为python脚本.该脚本调用内存密集型可执行文件,需要非常大的堆栈,因此csh脚本将stacksize设置为unlimited:
limit stacksize unlimited
Run Code Online (Sandbox Code Playgroud)
当我尝试在python中重现这个脚本时,我以一种非常天真的方式执行它们os.system,例如:
os.system('some_executable')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过无限制的堆栈大小来告诉操作系统运行这些可执行文件.有没有办法为python脚本中的调用指定stacksize?是否有一些我应该使用的低级系统调用?是否有一个控制它的模块(类似于shutil)?
我使用Python多线程来实现Quicksort.Quicksort是在函数中实现的.它是一个递归函数.每个线程调用Quicksort对它拥有的数组进行排序.每个线程都有自己的数组,用于存储需要排序的数字.如果数组大小较小(<10,000).它运行正常.但是,如果数组大小较大,则显示"最大递归深度超过".所以,我使用setrecursionlimit()函数将递归深度重置为1500.但程序直接崩溃...以下是quicksort代码.如果不在多线程环境中,它可以很好地工作.似乎多线程是递归深度问题的原因.
def partition (array, p, r):
x = array[r]
i = (p-1)
j = p
while (1):
if array[j] <= x:
i = (i+1)
temp = array[j]
array[j] = array[i]
array[i] = temp
j+=1
if j == r:
break
temp = array[i+1]
array[i+1] = array[r]
array[r] = temp
return i+1
def quicksort (array, p, r):
if p < r:
q = partition (array, p, r)
quicksort (array, p, q-1)
quicksort (array, q+1, r)
Run Code Online (Sandbox Code Playgroud)