Skip to main content

Executes python scripts in different environments without writing temp files to disk, it can pass and receive any type of variable, multiprocessing can be executed from everywhere, not only at top-level

Project description

Executes python scripts in different environments without writing temp files to disk, it can pass and receive any variable, multiprocessing can be executed from everywhere, not only at top-level

pip install callpyfile

# Create a file called callc1.py

import sys

from callpyfile import run_py_file  # use this function to call the pyfile

from a_cv_imwrite_imread_plus import open_image_in_cv

# an example with OpenCV

pics = [

    "https://github.com/hansalemaos/screenshots/raw/main/gimages/elephant.png",

    "https://github.com/hansalemaos/screenshots/raw/main/gimages/dl.png",

    "https://github.com/hansalemaos/screenshots/raw/main/gimages/house.png",

]

allpics = []

allpics_ = [open_image_in_cv(x) for x in pics]

for p in range(100):

    allpics.extend(allpics_)





# Execute the py file

resu = run_py_file(

    variables={

        "imagelist": allpics

    },  # The keys will be the global variables in the called pyfile

    pyfile=r"C:\Users\Gamer\anaconda3\envs\dfdir\callc2.py",  # The pyfile

    activate_env_command="",  # if you want to activate another environment, you can pass something like this (Anaconda): activate_env_command = ['activate.bat', 'otherenv']

    pythonexe=sys.executable,  # python.exe from your active environment

    raise_exception=False,  # if raise_exception is False, the function returns None if an Exception occurs during the Execution

)
# Create another file called callc2.py



import time

import cv2

from pathos.multiprocessing import ProcessingPool as Pool  # By the way: good stuff

import numpy as np

from callpyfile import to_stdout  # import the decorator





# Some CV stuff

def do_cv2_stuff(img):

    kernel = np.ones((5, 5), np.float32) / 25

    dst = cv2.filter2D(img, -1, kernel)

    return dst





@to_stdout(kill_if_exception=True) # optional, kills the process using os._exit()

def exemu():

    pool = Pool(nodes=5)

    res = pool.amap(

        do_cv2_stuff, imagelist

    )  # imagelist is not defined yet, but it doesn't matter because the decorator will create global variables from the dict you'have passed: {"imagelist": allpics},

    while not res.ready():

        time.sleep(0.001)

    allb = res.get()

    return allb





if __name__ == "__main__":

    exemu()
# Run  callc1.py



print(allpics[0][:1])

[[[255 255 255]

  [255 255 255]

  [255 255 255]

  ...

  [ 54  53  50]

  [ 57  55  52]

  [ 59  57  54]]]



print(resu[0][:1])

[[[255 255 255]

  [255 255 255]

  [255 255 255]

  ...

  [ 59  58  55]

  [ 56  54  51]

  [ 56  55  52]]]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

callpyfile-0.10.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

callpyfile-0.10-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file callpyfile-0.10.tar.gz.

File metadata

  • Download URL: callpyfile-0.10.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for callpyfile-0.10.tar.gz
Algorithm Hash digest
SHA256 c82dbe96b9ab9969d30c4d98c0cd4bc879e627ae5512eecc52911e4d032daeda
MD5 1e6343c4238a6bc924724d50fcf34638
BLAKE2b-256 3ea2cf15b733dd53dbabb420fadbdc9a23a9c7340183ee60f2a503c2fd10b841

See more details on using hashes here.

File details

Details for the file callpyfile-0.10-py3-none-any.whl.

File metadata

  • Download URL: callpyfile-0.10-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for callpyfile-0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 8d610b9f8fc47f2651d2d3c2f015ee9b25c7139a5b98eaa9c3555bcae7e62e95
MD5 4115c63c8351b0fefcd54b698b9c30b1
BLAKE2b-256 776b4ba65179e6cbb9018278a7b0df7b11c365b2845b5bafa32b795c58d05748

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page