Skip to main content

Starting a python script from another before it crashes

I'm trying to make some project code I have written, more resilient to crashes, except the circumstances of my previous crashes have all been different. So that I do not have to try and account for every single one, I thought I'd try to get my code to either restart, or execute a copy of itself in place of it and then close itself down gracefully, meaning its replacement, because it's coded identically, would in essence be the same as restarting from the beginning again. The desired result for me would be that while the error resulting circumstances are present, my code would be in a program swap out, or restart loop until such time as it can execute its code normally again....until the next time it faces a similar situation.

To experiment with, I've written two programs. I'm hoping from these examples someone will understand what I am trying to achieve. I want the first script to execute, then start the execute process for the second (in a new terminal) before closing itself down gracefully.

Is this even possible?

Thanks in advance.

first.py

#!/usr/bin/env python
#!/bin/bash
#first.py

import time
import os
import sys
from subprocess import run
import subprocess

thisfile = "first"
#thisfile = "second"

time.sleep(3)
while thisfile == "second":
    print("this is the second file")
    time.sleep(1)
    #os.system("first.py")
    #exec(open("first.py").read())
    #run("python "+"first.py", check=False)
    #import first
    #os.system('python first.py')
    #subprocess.call(" python first.py 1", shell=True)
    os.execv("first.py", sys.argv)
    print("I'm leaving second now")
    break
while thisfile == "first":
    print("this is the first file")
    time.sleep(1)
    #os.system("second.py")
    #exec(open("second.py").read())
    #run("python "+"second.py", check=False)
    #import second
    #os.system('python second.py')
    #subprocess.call(" python second.py 1", shell=True)
    os.execv("second.py", sys.argv)
    print("I'm leaving first now")
    break
time.sleep(1)
sys.exit("Quitting")

second.py (basically a copy of first.py)

#!/usr/bin/env python
#!/bin/bash
#second.py

import time
import os
import sys
from subprocess import run
import subprocess

#thisfile = "first"
thisfile = "second"

time.sleep(3)
while thisfile == "second":
    print("this is the second file")
    time.sleep(1)
    #os.system("first.py")
    #exec(open("first.py").read())
    #run("python "+"first.py", check=False)
    #import first
    #os.system('python first.py')
    #subprocess.call(" python first.py 1", shell=True)
    os.execv("first.py", sys.argv)
    print("I'm leaving second now")
    break
while thisfile == "first":
    print("this is the first file")
    time.sleep(1)
    #os.system("second.py")
    #exec(open("second.py").read())
    #run("python "+"second.py", check=False)
    #import second
    #os.system('python second.py')
    #subprocess.call(" python second.py 1", shell=True)
    os.execv("second.py", sys.argv)
    print("I'm leaving first now")
    break
time.sleep(1)
sys.exit("Quitting")

I have tried quite a few solutions as can be seen with my hashed out lines of code. Nothing so far though has given me the result I am after unfortunately.



source https://stackoverflow.com/questions/74593058/starting-a-python-script-from-another-before-it-crashes

Comments

Popular posts from this blog

ValueError: X has 10 features, but LinearRegression is expecting 1 features as input

So, I am trying to predict the model but its throwing error like it has 10 features but it expacts only 1. So I am confused can anyone help me with it? more importantly its not working for me when my friend runs it. It works perfectly fine dose anyone know the reason about it? cv = KFold(n_splits = 10) all_loss = [] for i in range(9): # 1st for loop over polynomial orders poly_order = i X_train = make_polynomial(x, poly_order) loss_at_order = [] # initiate a set to collect loss for CV for train_index, test_index in cv.split(X_train): print('TRAIN:', train_index, 'TEST:', test_index) X_train_cv, X_test_cv = X_train[train_index], X_test[test_index] t_train_cv, t_test_cv = t[train_index], t[test_index] reg.fit(X_train_cv, t_train_cv) loss_at_order.append(np.mean((t_test_cv - reg.predict(X_test_cv))**2)) # collect loss at fold all_loss.append(np.mean(loss_at_order)) # collect loss at order plt.plot(np.log(al...

Sorting large arrays of big numeric stings

I was solving bigSorting() problem from hackerrank: Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array. I know it works as follows: def bigSorting(unsorted): return sorted(unsorted, key=int) But I didnt guess this approach earlier. Initially I tried below: def bigSorting(unsorted): int_unsorted = [int(i) for i in unsorted] int_sorted = sorted(int_unsorted) return [str(i) for i in int_sorted] However, for some of the test cases, it was showing time limit exceeded. Why is it so? PS: I dont know exactly what those test cases were as hacker rank does not reveal all test cases. source https://stackoverflow.com/questions/73007397/sorting-large-arrays-of-big-numeric-stings

How to load Javascript with imported modules?

I am trying to import modules from tensorflowjs, and below is my code. test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title </head> <body> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script> <script type="module" src="./test.js"></script> </body> </html> test.js import * as tf from "./node_modules/@tensorflow/tfjs"; import {loadGraphModel} from "./node_modules/@tensorflow/tfjs-converter"; const MODEL_URL = './model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); Besides, I run the server using python -m http.server in my command prompt(Windows 10), and this is the error prompt in the console log of my browser: Failed to loa...